我正在尝试使用LoadLibrary()
动态加载DLL,该方法可以正常工作,但是我随后无法获取要调用的DLL中函数的地址。
DLL功能:(在CPP文件中)
_declspec(dllexport) void MyDllFunc()
{
printf("Hello from DLL");
}
调用代码:
typedef void (*MyDllFuncPtr)();
int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE LoadMe;
LPCWSTR str = L"C:\\Users\\Tony\\Documents\\Visual Studio 2008\\Projects\\DLL Loading\\Release\\MyDll.dll";
LoadMe = LoadLibrary(str);
if(LoadMe != 0)
printf("Successfully Loaded!\r\n");
else
printf("Loading Failed \r\n" );
MyDllFuncPtr func;
func = (MyDllFuncPtr)GetProcAddress(LoadMe, "MyDllFunc");
if (func != NULL)
func();
FreeLibrary(LoadMe);
}
func返回NULL !!!
我究竟做错了什么?
这是一个Win32 Console项目。
最佳答案
写
extern "C" _declspec(dllexport) void MyDllFunc()