一开始将C++的程序编译成了DLL,然后在自己的C#程序里调用这个DLL。当然要将需要用到的其他的文件和此DLL放在一起,因为C++的程序也用到了很多其他的文件。
然后就在C#中写了一个类,将用到的函数都放里面。就是重复的用DLLImport。
但是运行程序时报错,说是无法找到函数入口,先是发现在C++程序里,没有在函数外写_declspec(dllexport),这是将一个函数声名为导出函数,就是说这个函数要被包含她的程序之外的程序调用。 遂加上。加上后依然报错,在网上看到说,函数在编译后名称会改变,用DEPENDS.exe看了下,果然是这样,原来需要在_declspec(dllexport)前加上extern "C",指示编译器用C语言方法给函数命名。再运行,发现可以了。DEPENDS工具一般存放于VS的安装时的存盘目录中,...\\...\ Microsoft Visual Studio \ Common7 \ Tools \ depends.exe,你可以用它看DLL中的函数,以及它用到的其他DLL文件,也许你的DLL不能用是因为缺少其他dll。
但是,有个函数的参数为指针,运行后出来的结果为乱码,原函数为
extern