导出函数
_declspec(dllexport) int function()
导出类
class _declspec(dllexport) class1
引用Dll函数声明
_declspec(dllimport) int function()
解决不同编译器名字改编的问题
在定义导出函数时加上 extern "C" (大写C),如 extern "C" _declspec(dllexport) int function()
但这种方法有一个缺陷,不能用于导出一个类的成员函数,只能用于导出全局函数这种情况。
标准调用约定_stdcall
于是可以声明为 extern "C" _declspec(dllexport) int _stdcall function()
最终解决 采用模块定义文件(DEF)
如在?Dll2工程中添加Dll2.def文件
Dll2.def 文件内容可以如下:
LIBRARY Dll2
EXPORT
function()
显示加载方式加载Dll
LoadLibary函数 例如:
HINSTANCE hInst=LoadLibrary(_T("User32.DLL"));
if(hInst)
{
typedef BOOL (WINAPI * MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun=NULL;
//取得SetLayeredWindowAttributes函数指针
fun=(MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes");
if(fun)
{
fun( this->GetSafeHwnd(), RGB(255,0,255) , 0 , LWA_COLORKEY );
}
FreeLibrary(hInst);
}
根据序号访问Dll中的导出函数
MAKEINTRESOURCE宏把指定的函数序号转换为相应的函数名字字符串,这里的函数序号就是在Dll中声明的函数顺序。
编辑特别推荐:
VC++与Matlab混合编程的快速实现
VC++STL中的LIST类
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。