admin 发表于 2020-5-5 14:31:02

RADStudio10 编译的程序运行后报错:无法启动此程序,因为计算机丢失 rtl230.bpl;无法定位程序输入点 __dbk_fcall_wrapper 于动态链接库 BORLNDMM.DLL

新编译的一个小工具,编译正常,但运行就报错:“无法启动此程序,因为计算机丢失 rtl230.bpl。尝试重新安装该程序以解决此问题。”



接着在大千世界里找答案,说要在编译环境里设置后再编译,在工程属性窗口里,单击工程项目名如:Demo.exe ,鼠标右键后点击“Options”:



在弹出的“Project Options for ...”窗口中,找到“Packages—Runtime Packages”后,再在右边的选择项中选择“Link with runtime packages” 中将默认true,设置为false,并点击“OK”:



执行上述操作后,重新编译后运行,又报错误“无法定位程序输入点 __dbk_fcall_wrapper 于动态链接库 BORLNDMM.DLL 上。”



哎,我太难了……

接着又去大千世界里徘徊了许久,才知道这是 RADStudio10 里编译的 Bug,自从 Delphi2010 加入RTTI信息以后,编译的所有应用程序里都导出了这三个函数:__dbk_fcall_wrapper,dbkFCallWrapperAddr,TMethodImplementationIntercept,另尝试用 RemoveExportProc 工具清除这三个函数没效果:



另又尝试使用下面的方法,但根本不知道在哪里加呀!编译器的工作环境,我们也没空去折腾:

BuildWinRTL.dproj 用这个重新编译就行

{$IFDEF DEBUG}
exports
dbkFCallWrapperAddr,
{$IF defined(MACOS)}
MachExceptionsSuspend,
MachExceptionsResume,
__lldbFCallExceptionType,
__lldb_fcall_except_handler,
__lldb_fcall_wrapper,
{$ENDIF MACOS}
__dbk_fcall_wrapper;
{$ENDIF DEBUG}

最后没办法,只有放大招了——重新安装更高版本的编程环境RADStudio,因为是编译器 BUG 或其它引起的……



页: [1]
查看完整版本: RADStudio10 编译的程序运行后报错:无法启动此程序,因为计算机丢失 rtl230.bpl;无法定位程序输入点 __dbk_fcall_wrapper 于动态链接库 BORLNDMM.DLL