前言
最近在研究心电图处理算法和散点图分析模型,涉及需要将一些纯C编写的源码编译为DLL供C#调用。
先说一下碰到的坑,因为vs2015支持编译C代码,原本希望用vs直接编译DLL,发现需要各种配置,还出现各种编译问题、链接问题,差点崩溃;最后以试试看的心态用命令行进行编译生成,一次就成功了,看来化繁为简才是最有效的。
———————————————————————————–
下面进入正题,mark一下,供自己以后参考:
两点说明:
(1)编译器,我使用的是VS2015自带的cl
(2)编译DLL库的目的是方便其它语言调用,我的目标语言是C#
1. 打开vs2015的命令行工具
开始>Visual Studio 2015>Visual Studio Tools>Windows Desktop Command Prompts>Visual Studio 2015 x86 本机工具命令提示符
2. 在你要导出的函数(供外部调用的函数)前加上以下前缀
__declspec(dllexport)
例如:
我要提供的是RRDet()方法:
__declspec(dllexport) int RRDet(int datum, int init)
3. 执行编译和链接指令
cl /c *.c
link /OUT:MyDLL.dll /dll *.obj
执行截图:
可用Viewdll查看接口函数是否有问题: