[英]C++ compiler not working in cmd with visual studios and code blocks installed
[英]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.