我有以下代碼,我目前使用的是從C#Dll中調用函數,該函數在Visual C++中完美工作。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目錄中,然後對所有找不到的其他頭文件做了同樣的處理。
複製完所有頭文件後,它開始給出一大堆其他錯誤,用於處理剛剛移動的頭文件中的代碼 - 與下面的代碼無關。
爲什麼Code :: Blocks有這麼難的時候運行這個時,VS直接從蝙蝠運行它?
感謝
你能發佈一些錯誤嗎?你有沒有設置項目來鏈接'mscoree.dll'? – Yuushi
我會嘗試再次找到它們,從內存中它是各種頭文件中的'函數未定義'錯誤。如何將項目鏈接到'mscoree.dll'? –
函數定義沒有被發現,肯定聽起來像是一個鏈接器錯誤。我從來沒有真正使用過Code :: Blocks,但也許這會有所幫助? http://www.learncpp.com/cpp-tutorial/a3-using-libraries-with-codeblocks/ – Yuushi