1、首先需要导出C++的dll这个我就不多说了
2、C#当中调用的方式
[DllImport("OutTest.dll", EntryPoint = "GetName",CallingConvention = CallingConvention.Cdecl)]
public static extern void GetName();
不需要再项目当中引用该dll,直接像上面那样调用就可以了,但是前提是该dll是正确地被导出,且路径在相应的目录下面。
注意:
调用的格式是以C标准调用,怎么调用是由导出的时候指定的,可以在导出函数的.cpp文件上右键->属性->Advanced->Calling Convention里面设置调用的时候是怎么调用的,默认是_cdecl的方式进行调用,还可以是 _stdcall.
3、C#调用C++dll中参数类型的对应关系(常用的):
参考:https://my.oschina.net/u/216751/blog/178834
- C++参数类型 C#参数类型
- void* -> IntPtr
- char* -> string byte[] StringBuilder都可以?
- &变量名 -> 加上ref或者out
- *变量名 -> 加上ref或者out
- string -> byte