MinGW生成的.dll文件可以直接用MinGW链接,就像链接一般静态库一样。但是若希望在MSVC中使用,则要么需要生成.lib信息头文件,要么在源码中调用windows API的GetProcAddress()函数导入。
无论何种方法,都只适用于C风格函数;对于C++中的成员函数,由于不同编译器的前后缀名称生成规则不同,无法正确完成链接。
样例代码如下:
//dlltest.h
int __declspec(dllexport) _stdcall Double(int x);
//dlltest.cpp
extern"C"
{
int _stdcall Double(int x)
{
return x * 2;
}
}
其中,extern”C”是为了表明C风格函数,_stdcall指明压栈方式,主流可跨语言的都是stdcall。 _declspec(dllexport)指示这是导出函数,在使用的头文件中要改为 _declspec(dllimport)</