c++builder新版本的问题(10.1)

vfdn 2017-06-26 03:50:48
我写了一个测试程序,是将一个form封装到dll中,主程序调用并将dll的form显示在主程序的form中,程序在c++builder 2010版本中运行正常,在c++builder berlin 10.1运行就显示不出来,求大神指点
下面是代码
1.主程序
Unit.cpp

void __fastcall TForm1::Button1Click(TObject *Sender)
{
HINSTANCE hDll;
hDll = LoadLibrary("C:\\Users\\yuwp\\Desktop\\titlebtn\\Debug\\Project2.dll");
if (!hDll)
{
int i = GetLastError();
return;
}

fShowForm = (void _stdcall (*)(void *, void *, void *))GetProcAddress(hDll, "ShowForm");
if (!fShowForm)
{
int i = GetLastError();
return;
}

Form2 = new TForm2(Application);
Form2->WindowState = wsNormal;
Form2->BorderStyle = Forms::bsNone;
Form2->Visible = True;
LockWindowUpdate(this->Handle);
fShowForm(Form2, Application, Screen);
LockWindowUpdate(NULL);
}

2.dll
File1.cpp

extern "C" __declspec(dllexport) void _stdcall ShowForm(void *pFather, void *pApp, void *pScr)
{
Application = (TApplication *)pApp;
Screen = (TScreen *)pScr;
Form3 = new TForm3(Application);
Form3->Parent = (TWinControl *)pFather;
Form3->Align = alClient;
Form3->Visible = true;
return;
}

3.显示效果:
c++builder 2010

c++builder berlin 10.1
...全文
911 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
vfdn 2017-06-27
  • 打赏
  • 举报
回复
引用 1 楼 hongss 的回复:
版本不同可能运行库也有差异。 将所有程序,包括动态库,在新版本下重新编译下试试。
分别在两个版本下创建的工程,然后编译运行的,只有代码是复制粘贴的,并且两个版本分别在两台机器上
hongss 2017-06-27
  • 打赏
  • 举报
回复
版本不同可能运行库也有差异。 将所有程序,包括动态库,在新版本下重新编译下试试。

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧