2013-01-14 3 views
2

Visual C++에서 완벽하게 작동하는 C# DLL에서 함수를 호출하는 데 현재 다음 코드를 사용하고 있습니다. 내가 코드 :: 블록에이 이동할 때Visual C++ 코드가 Code :: Blocks에서 작동하지 않습니다.

#include <mscoree.h> 
#include <stdio.h> 
#pragma comment(lib, "mscoree.lib") 

void Bootstrap() 
{ 
    ICLRRuntimeHost *pHost = NULL; 
    HRESULT hr = CorBindToRuntimeEx(L"v4.0.30319", L"wks", 0, CLSID_CLRRuntimeHost, IID_ICLRRuntimeHost, (PVOID*)&pHost); 
    pHost->Start(); 
    printf("HRESULT:%x\n", hr); 

    // target method MUST be static int method(string arg) 
    DWORD dwRet = 0; 
    hr = pHost->ExecuteInDefaultAppDomain(L"c:\\temp\\test.dll", L"Test.Hello", L"SayHello", L"Person!", &dwRet); 
    printf("HRESULT:%x\n", hr); 

    hr = pHost->Stop(); 
    printf("HRESULT:%x\n", hr); 

    pHost->Release(); 
} 

int main() 
{ 
    Bootstrap(); 
} 

문제이며, (내가 더 잘 알고 - 작은 C로 ++ 나는 기본이었다 수행 한) 컴파일러 오류가 많이 발생합니다.

원래의 컴파일러 오류는 mscoree.h 헤더를 찾을 수 없기 때문입니다. .NET SDK에서이 파일을 찾았으므로이를 해결 한 mingw include 디렉토리로 복사 한 다음 찾을 수없는 다른 모든 헤더에 대해 동일한 작업을 수행했습니다.

모든 헤더를 복사 한 후 방금 이동 한 헤더의 코드와 관련하여 다른 오류가 발생하기 시작했습니다. 아래 코드와 관련이 없습니다.

VS가 방망이를 똑바로 돌릴 때 Code :: Blocks가 이렇게 힘든 시간을 보내는 이유는 무엇입니까?

감사

+0

몇 가지 오류를 게시 할 수 있습니까? 'mscoree.dll'과 링크 할 프로젝트를 설정 했습니까? – Yuushi

+0

나는 여러 가지 헤더에서 '함수가 정의되지 않은'오류를 메모리에서 다시 시도해 볼 것이다. 어떻게 프로젝트를'mscoree.dll'에 링크합니까? –

+0

함수 정의를 찾을 수 없습니다. 링커 오류와 같은 것 같습니다. 나는 Code :: Blocks를 개인적으로 사용하지는 않았지만 아마도 도움이 될 것인가? http://www.learncpp.com/cpp-tutorial/a3-using-libraries-with-codeblocks/ – Yuushi

답변

5

코드 :: 블록은 C++ 프로그래밍을위한 좋은 IDE,하지만 당신은 분명히 여기에 윈도우 프로그래밍을하고 있습니다. 동일한 프로그래밍 언어이지만 컴파일러는 서로 호환되지 않습니다.

gcc 컴파일러 또는 단일 CodeBlocks IDE로 CodeBlocks 버전을 다운로드 한 경우 MS C++ 컴파일러를 사용하려면 CodeBlocks를 구성해야합니다. 이를 수행하려면 >> 설정 >> 컴파일러 및 디버거 >> Toolchain 실행 파일으로 이동하십시오.

또한 동일한 옵션에서 을 검색하고 디렉토리을 검색하고 MS C++ 컴파일러 헤더의 경로를 지정하십시오.

일단 완료되면 프로그램을 컴파일 할 수 있습니다.

+0

제안에 감사드립니다. 나는 VS C++ 컴파일러로 전환했고 디렉토리를 include 디렉토리에 추가했지만 컴파일 한 후에는 50 개의 오류와 139 개의 경고가 발생했습니다. 어떤 아이디어? –

+0

여기에는 CodeBlocks와 함께 Visual C 6을 사용하는 방법에 대한 설명이 있습니다. 과정은 매우 유사합니다. http://wiki.codeblocks.org/index.php?title=Integrating_Microsoft_Visual_C_6_with_Code::Blocks_IDE – Baltasarq

0

Code :: Blocks는 Visual Studio와는 다른 컴파일러를 가지고 있습니다. 컴파일하는 동안 소스 코드의 디코딩과 인코딩이 다르기 때문에 동일한 프로그래밍 언어 임에도 불구하고 서로를 인식 할 수 없습니다.

관련 문제