Visual C ++代码无法在Code :: Blocks中使用

时间:2013-01-14 10:33:55

标签: c++ visual-studio codeblocks

我目前使用以下代码来调用C#Dll中的函数,它在Visual C ++中完美运行。

#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();
}

问题是,当我将其移动到Code :: Blocks(我更熟悉 - 因为我所做的小C ++本机)会引发很多编译错误。

原始编译器错误是因为找不到标头mscoree.h。我在.NET SDK中找到了这个,所以我把它复制到mingw include目录中解决了这个问题,然后我对它找不到的所有其他头文做了同样的事情。

在复制了所有标题后,它开始给出一大堆其他错误,与我刚刚移动的标题中的代码有关 - 与下面的代码无关。

为什么Code :: Blocks在VS直接运行时很难运行这个?

由于

2 个答案:

答案 0 :(得分:5)

Code :: Blocks 是一个很棒的C ++编程IDE,但你显然在这里做Windows编程。虽然它是相同的编程语言,但编译器之间并不兼容。

如果您使用gcc编译器或单个CodeBlocks IDE下载了CodeBlocks版本,则需要配置CodeBlock以使用MS C ++编译器。为此,请转到设置&gt;&gt;编译器和调试器&gt;&gt;工具链可执行文件

此外,在同一选项中,查找搜索目录并在其中放置MS C ++编译器标头的路径。

完成后,您将能够编译您的程序。

答案 1 :(得分:0)

Code :: Blocks与Visual Studio完全不同的编译器,编译时源代码的解码和编码是不同的,虽然它们是相同的编程语言但却无法识别。