VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1565|回复: 5

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

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-17 20:30:02 | 显示全部楼层 |阅读模式
动态库代码:
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);
    }
回复

使用道具 举报

0

主题

5

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-4-9 16:23:12 | 显示全部楼层
GetProcAddress(DLL,"_CreateCW");   加一个 "_"。
回复

使用道具 举报

0

主题

7

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-6-21 17:00:01 | 显示全部楼层
看代码是没什么问题,就是没看到__showWindow函数指针的定义
提示出什么错啦?
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-6-22 13:30:01 | 显示全部楼层
哦 ,我知道了
  HINSTANCE  hInstance;  
要进行初始化,不过现在有出现新问题,程序运行到
show(Form1->Handle  );  
就出现下面的问题
project project1.exe raised exception class EInvalidOperation with message 'Cannot make a visible window modal'.process stopped
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-6-24 12:15:01 | 显示全部楼层
if(NULL != show )
       {
            hCwnd = show(Application->Handle );
       }
回复

使用道具 举报

0

主题

7

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-6-25 09:45:01 | 显示全部楼层
提示都说了啊,“Cannot make a visible window modal”
我觉得是变量名的问题,因为"Form2"是在建立Form的时候就会导出的一个全局变量
除非你的Form2不是自动生成的,要不Form2都可以直接使用而不用代码里写new的
试下换个变量名试下

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表