读书人

为什么动态库 中的函数无法加载

发布时间: 2012-02-07 17:45:37 作者: rapoo

求助:为什么动态库 中的函数无法加载
动态库代码:
extern "C " __declspec(dllexport) HWND __stdcall CreateCW(HWND);
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------
HWND __stdcall CreateCW(HWND MainWindowHandle)
{
Application-> Handle = MainWindowHandle;
Form2 = new TForm2(NULL);
SetParent(Form2-> Handle,MainWindowHandle);
Form2-> ShowModal();
return Form2-> Handle;

}
调用代码:

HINSTANCE hInstance;
__showWindow show;
if(hInstance == NULL)
{
hInstance = LoadLibrary( "Project2.dll " );
}
if(hInstance != NULL)
{
MessageBox(NULL, "BEGIN ", " ",0);
show = (__showWindow)GetProcAddress(hInstance, "CreateCW ");
if(NULL != show )
{
hCwnd = show(Form1-> Handle );
}
else
{
MessageBox(NULL , "HANSHUJIAZAISHIBAI ", " ", 0);
}
}
else
{
MessageBox(NULL, "动态库加载失败 ", " ", 0);
}


[解决办法]
看代码是没什么问题,就是没看到__showWindow函数指针的定义
提示出什么错啦?
[解决办法]
if(NULL != show )
{
hCwnd = show(Application-> Handle );
}
[解决办法]
提示都说了啊,“Cannot make a visible window modal”
我觉得是变量名的问题,因为 "Form2 "是在建立Form的时候就会导出的一个全局变量
除非你的Form2不是自动生成的,要不Form2都可以直接使用而不用代码里写new的
试下换个变量名试下

我觉得会是因为Form2已经存在,虽然你new了一个新实例赋给Form2。。。

读书人网 >C++ Builder

热点推荐