先将c/c++程序改写成dll
这个好改,vs里新建项目->visual c++->win32项目->应用程序类型为dll->空项目(可选)
然后文件头.h 加入
#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif
方便c#寻找入口
WINAPI DllMain 是dll函数入口,我们自己的外部接口用EXPORT 定义即可,比如:
EXPORT void VDMount( int deviceNumber,char* fileName,char* size,char driveLetter){...}
如何编写dll,已经有很多资料了。。
在c#中这么使用
[DllImport("dll_vdctrl.dll")]
public static extern void VDMount(int deviceNumber, string fileName, string size, char driveLetter);
这里注意下,dll中的char *指针类型在c#中的string是等价的,同样,char*[] =string[]
还有一点,dll项目的属性页中,将常规中的字符集设置为未设置,不然传递的字符串是乱码,具体原因没查
然后,我们就可以在c#中调用VDMount函数了