을 설정하는 방법을 검색 경로의 과정에서 생성 CreateProcess
-
14-12-2019 - |
문제
내가 사용하고 CreateProcess
을 invoke cl
컴파일과 링크에 또 다른 C++프로그램(TestProg.cxx
로)DLL.I invoke cl.exe
다음과 같은 컴파일 옵션:
컴파일 옵션:
/Od /nologo /Fo /RTC /w /Zc TestProg.cxx /DLL
전화:
if ( CreateProcess(PATH_TO_EXE, COMPILATION_OPTIONS, NULL,NULL,
FALSE,0,NULL,NULL,&si,&pi) )
{
//....
}
는 경우 TestProg.exe
담고 #include <iostream.h>
나는 다음과 같은 컴파일러:
TestProg.cpp(1) : fatal error C1034: iostream.h: no include path set
없이 #include
명령을 내가 가지고 다음과 같은 링크 오류가:
LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'
무엇이 잘못된 것입니까?
검색에 대한 대답은 지난 6~7 시간,웹에서 그러나지 않았다 그것을 찾을 수 있습니다.를 사용하여 windows API 를 적응하지 못한 부분도 있습니다.
해결책
당신의 정의 CreateProcess
:
BOOL WINAPI CreateProcess(
__in_opt LPCTSTR lpApplicationName,
__inout_opt LPTSTR lpCommandLine,
__in_opt LPSECURITY_ATTRIBUTES lpProcessAttributes,
__in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,
__in BOOL bInheritHandles,
__in DWORD dwCreationFlags,
__in_opt LPVOID lpEnvironment,
__in_opt LPCTSTR lpCurrentDirectory,
__in LPSTARTUPINFO lpStartupInfo,
__out LPPROCESS_INFORMATION lpProcessInformation
);
당신이 선택적 매개 변수 설정 __in_opt LPVOID lpEnvironment,
하기 NULL
.
다에 따라 정의:
포인터를 포 환경 블록에 대한 새로운 과정입니다.이 매개 변수가 NULL,새로운 프로세스를 사용 환경의 과정입니다.
cl.exe
의 위치 정보를 포함하고 라이브러리 경로에서 환경변수-보 setenv.bat
에 대 디렉토리에 있습니다.이 경우,어느 당신의 호출 프로세스 또는 당신의 대상 프로세스는 실행하는 환경에서는 이러한 변수를 설정합니다.
당신이 선택할 수 있을 만들 수 있습니다 환경변수에 따라 스 MSDN:
환경 블록으로 구성됩 null 로 끝나는 블록 null 로 끝나는 문자열입니다.각 문자열은 다음과 같은 형식으로 제공합니다.
name=value\0
기 때문에 등호 구분자로 사용해야 합니다에는 사용되지 않습 는 이름의 환경 변수입니다.
또는 필요할 수 있습 프로그램에서 실행할 수 있습니다 VS 도구합니다.좋은 이제 문제의 것 프로그램을 실행하려면 이 프롬프트에서 오히려 Visual Studio 하는 경우,그 문제를 해결합니다.
는 이유를 사용하지 않는 #include
생산 링커에 오류로 인해 사실이 없는 경우에는,포함 cl.exe
보이지 않는 것들을 위해-그 다음은 C/C++런타임 라이브러리.
로 측 참고-나는 표준에서는 C++가 #include <iostream>
i.e 없이 .h
.