c#在linux系统下调用c++的so文件,该怎么处理

c#在linux系统下调用c++的so文件,该怎么处理,第1张

C++编译so文件与C编译so一样都是加参数 -shared

C语言调用C++的so

首先C要调用的C++的函数必须是extern "C"声明的。

其次编译C程序时需要增加链接libstdc++so(可能名字不打对自己查查)

Jni调用就行了,是要按规则写接口api,如果接口很多,也没法,那是你的业务问题,要重新设计业务逻辑。我们之前用的c++单独交叉编译一个进程,和安卓界面用tcp通信,如果接口多也以为着协议多,一样的。

1,如果同时打开静态库和运行程序调用,调式模式下,可以进入静态库的内部函数进行调试;

2,其实不用把shadow build取消勾选;文件输出的文件就是liba的文件,可以在shadow目录里面很方便找到;

3,新的项目使用的时候,就是让其能找到liba,和该库的h头文件;

4,QT的编译输出的静态库名字会自动在项目名字前加lib三个字,后缀是a;

5, QT515的编程的工程与该例子中缺少“需要什么模块就添加什么”的部分;

-lxx

xx是你的so文件名

其实使用方法和你使用数学库函数是一样的,源代码中添加

#include <mathh>,编译的时候,加上-lm参数。

注:linux下的so文件为共享库,相当于windows下的dll文件。

扩展资料:

 

linux下编写调用so文件实例

so是Linux(Unix)下的动态链接库 和dll类似

比如:

文件有: ac, bc, cc

gcc -c ac

gcc -c bc

gcc -c cc

gcc -shared libXXXso ao bo co

要使用的话也很简单 比如编译dc, 使用到libXXXso中的函数, libXXXso地址是MYPATH 

gcc dc -o d -LMYPATH -lXXX

注意不是-llibXXX

testc文件和一个testh,这两个文件要生成libsotestso文件。然后我还有一个testsoc文件,在这个文件里面调用libsotestso中的函数。

编写的过程中,首先是编译so文件,我没有编写makefile文件,而是参考的2里面说的直接写的gcc命令。

因为so文件里面没有main函数,所以是不可执行的,所以编译的时候要加上-c,只生成目标文件。

以上就是关于c#在linux系统下调用c++的so文件,该怎么处理全部的内容,包括:c#在linux系统下调用c++的so文件,该怎么处理、C/C++源文件直接交叉编译生成.so文件供安卓应用程序调用,可以吗、linux下qt程序怎么静态调用libqt5core.so等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10634210.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存