簡體   English   中英

Visual C ++代碼在Code :: Blocks中不起作用

[英]Visual C++ code not working in Code::Blocks

我現在使用以下代碼從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目錄中,然后對找不到的所有其他標頭執行相同的操作。

復制完所有標頭之后,它隨后開始提供其他全部錯誤,與我剛移動的標頭中的代碼有關—與下面的代碼無關。

為什么當VS直接運行它時,Code :: Blocks很難運行它?

謝謝

Code :: Blocks是用於C ++編程的出色IDE,但是您顯然在這里進行Windows編程。 盡管它是相同的編程語言,但編譯器之間並不兼容。

如果您已經使用gcc編譯器下載了CodeBlocks版本,或者是單個CodeBlocks IDE,則需要配置CodeBlocks才能使用MS C ++編譯器。 為此,請轉至設置>>編譯器和調試器>>工具鏈可執行文件

另外,在同一選項中,查找“ 搜索”目錄 ,並將MS C ++編譯器標頭的路徑放在此處。

完成后,您將可以編譯程序。

Code :: Blocks的編譯器與Visual Studio完全不同,編譯時對源代碼的解碼和編碼是不同的,盡管它們是相同的編程語言,但無法彼此識別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM