要想unity调用c++库,那么就需要先创建一个c++的工程,其实官方有详细的说明,可以阅读这个文档https://learn.microsoft.com/en-us/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=msvc-170
重点划线
extern "C" MATHLIBRARY_API 这个前缀是将函数导出给C#,这样C#中可以通过DllImport来调用
- 那么什么是extern "C" 呢
原因是C++编译的时候会对函数改名,这个标记就是说明要用C的编译方式来编译,不要改名,因为C++中的重载在编译代码之后会修改名字,比如函数add(int a,int b)在编译后名字就是add_int_int了,所以如果不标记的话,dllImport就找不到这个函数
Tips: 静态函数是不支持extern "C" 的
当然这里提一句,如果你代码是用c写的,就不需要extern "C" 前缀了,只需要加extern就可以了
- 如何在Unity中进行Import呢?
代码直接贴一下吧,dllImport你导出的那个文件名字,对了,dll在unity中的导入平台要设置好,
[DllImport("dllfileName.dll")]
public static extern int testCall();
编译Android平台
https://developer.android.com/studio/projects/add-native-code?hl=zh-cn
安卓下的导出依然是添加extern C
使用ndk编译不同平台的库
注意安卓dllimport的是so的文件名,不带扩展名哦
[DllImport("libname")]
public static extern int testCall();
网友评论