在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在C++端包括创建dll项目、源文件下添加类、头文件对方法添加修饰符及在源文件实现头文件方法;在C#端(非CLR)包括将dll拷贝到运行目录及DllImport定义调用的方法。 1、 创建dll项目
2、 源文件下添加类
3、 头文件对方法添加修饰符 extern "C" _declspec(dllexport) double __stdcall TestFuzzy(char * localPath,int cols,int lowThreshold,int heightThreshold); “extern "C" _declspec(dllexport)”是必备的不然无法导出此方法,“__stdcall”代表参数的顺序 4、 在源文件实现头文件方法 double _stdcall TestFuzzy(char * localPath,int cols,int lowThreshold,int heightThreshold) { } 5、 将dll拷贝到运行目录 对C++项目中引用的第三方的库需要一起拷贝过来,如下图引用了OpenCV的库。
6、 DllImport定义调用的方法 [DllImport("ThirdDll.dll", EntryPoint = "TestFuzzy")] public static extern double TestFuzzy(string localPath, int cols, int lowThreshold, int heightThreshold); 7、 对于第三方库的添加 通过NuGet添加或按照手工步骤添加(包括:“工程---属性---配置属性---c/c++---常规---附加包含目录”、“工程---属性---配置属性---链接器---常规---附加库目录”及“工程---属性---配置属性---链接器---输入---附加依赖项”) 8、 注意事项 不能跨DLL传递std::string用char *替代。c#调用c++的类型对照参考 “https://www.cnblogs.com/profession/p/4935100.html”
参考: https://www.cnblogs.com/lgyup/p/7116162.html https://blog.csdn.net/fuck487/article/details/53036086 https://blog.csdn.net/big_bit/article/details/51595714 https://blog.csdn.net/ooyyee11/article/details/6894436
|
请发表评论