MFC导出函数, 在头文件中声明如下:
extern “C”_declspec(dllexport) void WINAPI fun();
其中extern “C”表示作用域是全局的,编译和链接按照C语言方式。
WINAPI表示函数调用规则,WINAPI在windef.h这个头文件中定义
#define WINAPI__stdcall
常用的调用规则有__stdcall、__cdecl和__pascal
__stdcall函数参数的入栈方式是最右边先入栈;__pascal则是从最左侧先入栈。
WPF中导入函数, 在partial class增加导入语句:
[DllImport(“xxx.dll”)]
public static extern void fun();
由于WPF为托管代码,如果函数参数需要传入指针,可以用与指针占用字节相同的变量接受,例如:
extern “C”_declspec(dllexport) void WINAPI fun(int* a, char* b);
对应:
[DllImport(“xxx.dll”)]
public static extern void fun(int c,byte[] d);