BCB代码连接错误:[Linker Error] Unresolved external ‘__fastcall Filectrl::SelectDirectory

我用到了C++ Builder的函数SelectDirectory,  但编译时出现错误,说找不到这个函数的lib,无法link,错误信息如下:
[Linker Error] Unresolved external ‘__fastcall Filectrl::SelectDirectory(System::AnsiString&, System::Set<Filectrl::TSelectDirOpt, 0, 2>, int)’ referenced from E:\BORLAND\CBUILDER4\PROJECTS\MAIN.OBJ.

在C++ Builder 上设置如下:
1.在compiler下选择Release
2.在Packages下去除Build with Runtime Packages
3.在Linker下去除Use dynamic RTL

运行时候提示“Unresolved external ‘__fastcall Filectrl::SelectDirectory(System::AnsiString&, System::Set<Filectrl::TSelectDirOpt, 0, 2>, int)’ referenced from E:\CB5DEV\WORKDAILY\UNIT1.OBJ”

在未装有BCB的电脑上运行提示“缺少VCL60.BPL/RNT60.BPL/VCLX60.BPL”。

我想可能应该要在工程还得加入包含SelectDirectory的lib库.
请问这个问题如何解决?


问题解决,请各位以后遇到类似的问题在文件头部加上  #pragma link “vclx.lib”,进行强制链接后就可以了。

谢谢大家的回答。


大家可以也试一下,把project的option的package里的build with runtime package这项取消,也写个SelectDirectory函数,编译肯定也通不过。
现在不得不选中这项缺省配置,才能编译通过,否则就会link error.
可是这样的结果是,我在别的未装C++Builder的机器运行这个程序,还必须附带vcl50.bpl和vclx50.bpl。
其实vcl50.bpl和vclx50.bpl就是动态连接库,我如果有办法在编译我的程序时
按静态连接,应该可以不需要这两个库的。我再试试。


我现在恢复了一项缺省配置,问题得到解决了。
在project的option的package里,我点中build with runtime package这项,就可以
了。我原先取消这项的原因是希望编译出来的可执行文件在发布时不需要c++ builderd的runtime package,现在不得不选中这项


我的源文件中有加上 #include <FileCtrl.hpp>
其实如果没有这句,那在compile时就会出现compile error,错误应该是”SelectDirectory函数未声明”.
现在我的错误是link error,就是编译器在最后连接obj时,因为找不到含有SelectDirectory的机器代码obj,出现了link error,无法将obj连接成可执行文件.
我想也许是我把项目的某些配置改了,以致编译器找不到所需要的库.现在我打算重新按
缺省配置来编译.

© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0
分享
评论 抢沙发
CPPKU的头像-cppku-C++库

昵称

取消
昵称表情代码图片