c++builder 所建dll 包含窗体,用到控件 cxGrid问题

seawn 2014-10-20 04:33:11
exe调用 dll窗体,窗体上包含cxGrid控件,退出主程序exe就报
project XXX.exe raised exception class EAccessViolation with message 'Access violation at address 4000572c. Read of address 04A66C74'. Process stoped. Use Step or Run to Continue.

如果没有cxGrid控件,就没有问题,,一放入cxGrid控件退出程序就报错。动态调用dll,是不是哪里出错了。
请大神支招。。

HINSTANCE DLLInst = LoadLibrary(dlls.c_str());
if (DLLInst)
{
typedef void (*pFun)(TApplication* mainApp,FUNPARA * fpEntry);
pFun cf = (pFun)GetProcAddress( DLLInst,func.c_str());
if (cf)
cf(Application,&G_f);
else
{
func = "无法定位入口函数 "+func+" ,请与系统管理员联系!";
MessageBox(Handle,func.c_str(),"错误",MB_OK|MB_ICONERROR);
}
}
else
{
dlls = "无法装载动态链接库 "+dlls+" ,请与系统管理员联系!";
MessageBox(Handle,dlls.c_str(),"错误",MB_OK|MB_ICONERROR);
}
FreeLibrary(DLLInst);
...全文
171 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
得码刘永锋 2015-05-24
  • 打赏
  • 举报
回复
我也碰到这个问题,窗体放cxgrid还可以,一旦有数据就不报错。
seawn 2014-10-21
  • 打赏
  • 举报
回复
有一个严格的规则,你应该遵循编制DLL时:你必须编译这两个主要模块与运行时包DLL,包含用于在模块的类。在你的情况,你应该包括expressquantumgrid和expressbars”(的tdxstatusbarcontainercontrol组件的expressbars的一部分)的运行时包运行时包编译你的应用时,DLL列表。这样,一切都会好的。 就是所有exe+dll都用一样的运行时包。所有问题都解决了 装个devexpress控件,用起来不是这里出错就是那里内存报错。不是找不到类就是bpl缺少。。。差点想放弃bcb了。。。 结贴吧。。自己耗费两天摸索的。。差点砸电脑。。望其他朋友少走弯路
seawn 2014-10-20
  • 打赏
  • 举报
回复
没有人回答么。。。。。 现在cb用什么版本最稳定,可以装devexpress控件 以前写的程序也可以重新编译

604

社区成员

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

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