2014-09-24 4 views
0

이라는 또 다른 응용 프로그램을 만들고 컴파일하는 데 필요한 정보가 들어있는 Program1.exe이라는 첫 번째 프로그램이 있다고 가정 해 봅시다. 사실 그것은 또한 txt 파일이나 그 정보를로드 할 수 있습니다.프로그래밍 방식으로 작성하고 C++로 프로그램에서 컴파일

인터넷 검색, 나는 이것이 Visual Studio를 사용하여, C#에서 할 "쉽게"것으로 나타났습니다 :

How to programatically build and compile another c# project from the current project

Programmatically Invoke the C# Compiler

문제는 내가 사용하지 않는 것입니다을 (그리고 사용할 수 없습니다) C#,하지만 C++. 요약하면, 제 질문은 C++을 사용하여이 동일한 작업을 수행 할 수 있는지의 여부입니다. 나는 추가 라이브러리없이 그것을하고 싶지만 그렇게 할 수 없거나 할 수 없다면, 그것을 허용하는 라이브러리를 추천 할 수있다.

아마 당신이 그것을 알아 차렸을 것이라고 생각하지만 내 목표는 Windows에서 사용하므로 휴대용이 아닌지 상관하지 않습니다.

감사합니다.

+0

이것은 매우 무거운 수동 기술처럼 보입니다. 상위 목표를 공유하면 다른 전략에 대한 조언을 전적으로 제공 할 수 있습니다. 즉, [llvm] (http://llvm.org/)은 런타임에서도 실행 파일을 만드는 데 도움이 될 수 있다고 생각하지만, C# 에서처럼 간단하지는 않습니다. –

+0

@ MagnusHoff Magnus의 조언에 감사드립니다. 당신이 말했듯이, 나는 .NET 플랫폼에 의해 제공되는 것과 같은 간단한 메소드가있을 것이라고 생각하지 않습니다. 네가 나에게 제안한 도서관을 살펴볼거야. – JuanGM

답변

3

C++ 프로그램이 텍스트 파일에 저장된 코드를 기반으로 다른 프로그램을 컴파일하고 실행하는 것은 간단합니다 (홀수이면). 그러나 다른 프로그램을 디버깅하는 것은 아닙니다.

+0

그러나 프로그램이 컴파일러/링커가 설치된 컴퓨터에서 실행되는 경우에만. 그렇지 않으면 전체 C++ 컴파일러를 "사소한"프로그램에 포함시켜야 할 수도 있습니다. – tgmath

+0

@Paul tgmath가 말했듯이 나는 컴퓨터에 컴파일러가 있는지를 확신 할 수 없으므로 코드 자체를 컴파일 할 수 있어야한다. – JuanGM

+0

+1하지만, OP에 대한 실제적인 리드를 제공하기 위해서 - 다른 프로그램을 호출하는 법을 배우기 위해서'system()'과'execv' 계열의 함수를 체크하고, 그것을 사용하여 당신이 선택한 C++ 컴파일러를 실행 시키십시오. 소스 코드는 임시 파일에 가장 쉽게 작성됩니다. 당신이 컴파일러를 운영하는 것은 거의 중요하지 않습니다. 'program1.exe'에서'program2.exe'를 실행하고 싶지는 않지만, 같은 방식으로 할 수 있습니다. @ user3869641 - 사용할 수있는 라이브러리 API가있는 컴파일러가 있는지 확인할 수는 있지만 실제로는 무리한 제약입니다. –

관련 문제