【问题标题】:Program compiles fine in the IDE but does not compile on the command line程序在 IDE 中编译良好,但在命令行上无法编译
【发布时间】:2012-11-28 20:56:17
【问题描述】:

我的一个构建遇到了一些问题。我正在使用 Jenkins 构建 builderXE 项目,但出现以下错误。

C:\Program Files\Embarcadero\RAD Studio\8.0\Bin\CodeGear.Cpp.Targets(2341,5): error : Error: Unresolved external '__fastcall Sqlexpr::TSQLQuery::~TSQLQuery()' referenced from    C:\JENKINS\WORKSPACE\project\STRINGLOOKUPFRMCODE.OBJ
C:\Program Files\Embarcadero\RAD Studio\8.0\Bin\CodeGear.Cpp.Targets(2341,5): error : Error: Unresolved external '__fastcall Sqlexpr::TCustomSQLDataSet::~TCustomSQLDataSet()' referenced from C:\JENKINS\WORKSPACE\project\STRINGLOOKUPFRMCODE.OBJ
C:\Program Files\Embarcadero\RAD Studio\8.0\Bin\CodeGear.Cpp.Targets(2341,5): error : Error: Unresolved external '__fastcall Sqlexpr::TCustomSQLDataSet::ParamByName(const System::UnicodeString)' referenced from C:\JENKINS\WORKSPACE\project\STRINGLOOKUPFRMCODE.OBJ
C:\Program Files\Embarcadero\RAD Studio\8.0\Bin\CodeGear.Cpp.Targets(2341,5): error : Error: Unable to perform link

我读到可以使用 rsvars.bat 修复路径,但是当我尝试时没有任何反应。这是我尝试过的。

"C:\Program Files\Embarcadero\RAD Studio\8.0\bin\rsvars.bat" MSBuild "/t:Clean;Build" "/p:config=Release" "C:\jenkins\workspace\project\myProject.cbproj"  

该项目在 builderXE 中编译没有问题,但是当我使用 Jenkins 或仅使用命令行时,我得到了这些错误。我需要做什么才能让它再次工作。

更新:我已经用我正在使用的脚本更新了我的帖子。

set PATH="C:\Program Files\Embarcadero\RAD Studio\8.0\lib\win32\release;C:\Program  Files\Embarcadero\RAD Studio\8.0\bin;C:\Documents and Settings\All Users\Documents\RAD Studio\8.0\Bpl;C:\Program Files\Embarcadero\RAD Studio\7.0\bin;C:\Documents and Settings\All Users\Documents\RAD Studio\7.0\Bpl;C:\PROGRA~1\Serena\vm\win32\bin;C:\PROGRA~1\Serena\vm\common\bin\win32;C:\PROGRA~1\Borland\CBUILD~1\Projects\Bpl;C:\PROGRA~1\Borland\CBUILD~1\Bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Wave Systems Corp\Dell Preboot Manager\Access Client\v5\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\tmssoftware\TMS Component Pack\bpl\;C:\Program Files\SmartBear\Automated Build Studio\bin;C:\Program Files\Mercurial;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\borland\CBuilder5\Bin;C:\Program Files\Embarcadero\RAD Studio\8.0\bin;C:\Program Files\Embarcadero\RAD Studio\7.0\bin;%IMPLIB%;%ADV%\x86;C:\Program Files\TortoiseHg\;C:\Python26;C:\Program Files\Embarcadero\RAD Studio\8.0\lib\win32\debug;"

call "C:\Program Files\Embarcadero\RAD Studio\8.0\bin\rsvars.bat"
MSBuild "C:\jenkins\workspace\project\myProject.cbproj" "/t:Clean;Build" "/p:config=Release" 

【问题讨论】:

    标签: jenkins c++builder c++builder-xe


    【解决方案1】:

    在 Jenkins 中,您是否使用“执行 Windows 批处理命令”来进行这些调用? 如果是这样,试试这个:

    call "C:\Program Files\Embarcadero\RAD Studio\8.0\bin\rsvars.bat"
    MSBuild "/t:Clean;Build" "/p:config=Release" "C:\jenkins\workspace\project\myProject.cbproj"
    

    call 命令将运行批处理文件并设置当前会话中的所有环境变量。然后,这些将可用于您的 MSBuild 调用。

    还要确保您需要的所有 dll 都在当前的 %PATH% 中。你可以这样做:

    set PATH=<your_dll_path_here>;%PATH%
    

    这应该在一开始就完成。

    【讨论】:

    • 感谢您的回复。我希望我能早点回复。尝试您的建议后,我仍然收到这些错误。我还尝试将 DLL 路径放在与 MSBuild 调用相同的执行批处理命令中。
    • 你能发布你的确切脚本吗?另外,在您的 Execute Windows Batch Command 中,您可以只输入path,然后在此处发布输出吗?
    • c:\jenkins\workspace\project>PATH PATH=%FrameworkDir%;%FrameworkSDKDir%;%PATH%;%IMPLIB%;%hg%
    • 不确定这是不是拼写错误,但应该是c:\jenkins\workspace\project&gt;set PATH=%FrameworkDir%;%FrameworkSDKDir%;%PATH%;%IMPLIB%;%hg%。注意“set”关键字
    猜你喜欢
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多