문제

내가 사용하고 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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top