2011-12-19 60 views
5

有沒有辦法告訴一個Delphi項目,它建立一個DLL作爲主機應用程序使用與正在構建的DLL的輸出目錄相同的目錄中的可執行文件?來自輸出目錄的Delphi XE2主機應用程序

是這樣的:

DLL host app Delphi - this does not work

的一件事是,我使用的選項設置與德爾福XE2,所以在dproj的DLL我建設我甚至不有DCC_ExeOutput目錄,不確定是否重要。

允許這將嚴重解決我們嘗試從VSS遷移到SVN時遇到的一些問題。

另外,你叫什麼($)的東西?

回答

4

$(name)東西是環境變量。我試着設置主機應用程序.\$(Platform)\$(Config)\Test.exe並收到此錯誤信息:

Could not find program, '.\%Platform%\%Config%\Test.exe'. 

注意$(...)是如何變成環境變量語法。

我也試圖與$(systemdrive)\Test.exe並收到此錯誤信息:

Could not find program, 'C:\Test.exe'. 

所以很明顯的環境變量將與他們的價值觀取代,如果它們確實存在。我認爲有理由得出結論,用於啓動主機應用程序的環境顯然沒有定義特殊的Delphi特定環境變量。

所以,我認爲你的問題的答案是,你不能像這樣使用間接方式來進行主機應用程序設置。

另一方面,環境變量被替換,所以也許你可以使用它來使事情變得更容易。換句話說,你可以定義你自己的一些環境變量。我不知道這是否對你有幫助,因爲我不知道你的問題的確切細節。

+0

呵呵,這一切似乎都是真的,但你會認爲我可以設置MSBuild將運行的預鏈接構建事件。這樣我可以做一些事情,比如'set outdir = .. \ debug \ final'。這似乎並不想工作。我可以說Delphi環境變量和Windows環境變量之間存在差異,當它們每個都可以被調用時,它們並不明顯。 – 2011-12-19 20:57:48

+1

我的心理模型是,主機應用程序設置適用於構建後,所以所有的構建變量不再適用。但這只是猜測。使用toolsapi的IDE插件可能會獲得回報,尤其是因爲我們已經證明env vars已被擴展。 – 2011-12-20 00:05:35