Я использую CreateProcess
для вызова cl
и link
для компиляции и связывания другой программы C ++ (TestProg.cxx
) в DLL. Я нашел правильные параметры компиляции и связывания:
Параметры компиляции:
/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 tools, все работает и создается dll.
Но, запустив его из отладчика VS, я получаю следующую ссылку:
LINK : fatal error LNK1104: cannot open file 'kernel32.lib'
или когда ссылки ссылок удаляются из параметров ссылки, я получаю следующую ошибку:
LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'
Что я делаю не так?
Похоже, что в параметрах ссылки что-то не хватает для запуска в режиме отладки, или в пути поиска в режиме отладки отсутствуют некоторые каталоги. Я не знаю, как исправить любой из этих случаев.
Я гуглил это за последние 1/2 дня, но не нашел. Использование Windows API является новым для меня.
Заранее большое спасибо