我正在使用CreateProcess
來調用cl
和link
來編譯並鏈接另一個C++程序(TestProg.cxx
)爲DLL。我找到了正確的編譯和鏈接選項:如何在調試模式下運行調用CreateProcess鏈接的程序
編譯選項:
/W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _WINDOWS /D _USRDLL /D BUILDDLL_EXPORTS /D _WINDLL /D _UNICODE /D UNICODE /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /analyze- /errorReport:queue /LD
聯動選項:
/INCREMENTAL /NOLOGO "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /ERRORREPORT:QUEUE /Entry:DllMain
我打電話CreateProcess
有:
if (CreateProcess(full path to cl.exe, compilation options, NULL,NULL,FALSE,0, NULL,NULL,&si,&pi))
{
//....
}
運行從VS應用工具提示,它的工作原理和DLL的創建。
但是從VS調試器,我得到以下鏈接錯誤運行它:
LINK : fatal error LNK1104: cannot open file 'kernel32.lib'
,或者當鏈接庫從鏈接選項我碰到下面的錯誤刪除:
LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'
什麼我做錯了嗎?
IMO在調試模式下運行的鏈接選項中似乎缺少一些東西,或者調試模式的搜索路徑缺少一些目錄。我不知道如何解決這些情況。 我在過去的1/2天內搜索了這個,但沒有找到它。使用Windows API對我來說是新的。
非常感謝提前
似乎你的環境設置不正確。確保你的'LIB'環境變量集和庫可以通過它進入 – Lol4t0 2012-03-20 19:16:13