Как установить точку входа в процесс, созданный из CreateProcess - PullRequest
0 голосов
/ 15 марта 2012

Я использую CreateProcess для вызова cl для компиляции и связывания другой программы C ++ (TestProg.cxx) в DLL.Я вызываю cl со следующими параметрами компиляции:

/Od /nologo /Fo /RTC /w /Zc /EHsc /I\INCLUDE /I\LIB /I\PATH TestProg.cxx /DLL

вызов:

if ( CreateProcess(full path to cl.exe, compilation options, NULL,NULL,FALSE,0,       NULL,NULL,&si,&pi) ) 
{
 //....
}

Запустив приложение из командной строки VS Tools, я получил следующую ошибку связывания:

LINK : fatal error LNK1561: entry point must be defined

Что я делаю не так?Я искал ответ за последние 1/2 дня в Интернете, но не нашел его.Использование Windows API является новым для меня.

Спасибо

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Это не ошибка при использовании CreateProcess() для запуска компилятора, это ошибка компилятора, который говорит вам, что ваш TestProg.cxx не имеет функции main(). (Или DllMain(), поскольку вы, похоже, создаете DLL.)

0 голосов
/ 15 марта 2012

У вас ошибка компоновщика, поэтому компоновщик не смог создать двоичный файл. Точка входа может быть предоставлена ​​через параметр командной строки /ENTRY, подробности см. В MSDN:

/ ENTRY (символ точки входа)

У вас будет что-то вроде: cl.exe /ENTRY:DllMain ..., где DllMain будет вашей точкой входа в исходном коде.

...