如何從非託管C++調用託管c#功能從非託管C++調用託管c#功能
回答
RE:如何從非託管C++應用程序調用託管C#代碼?
中調用託管的.NET C#COM從非託管C++代碼對象...
http://www.codeproject.com/KB/cs/ManagedCOM.aspx
結束語託管的C#DLL的非託管C++項目:DLL。
http://www.experts-exchange.com/Programming/Languages/.NET/Q_22006727.html
我跟着你提供的第二個鏈接,併成功編譯cpp文件但未能運行它。它在使用smartpointer的CreateInstance()失敗.....所以iam無法調用c#dll的函數 – user186246 2010-04-27 09:35:56
請在這裏發佈一個解決方案或至少它的總結。該鏈接將來可能會被打破。而且在這裏閱讀所有解決方案也更容易。如果他們不止一個,你可以發佈他們作爲多個答案。謝謝! ;) – bluish 2015-09-15 14:07:56
或者使用project of mine,讓C#創建非託管的出口。那些可以被消費,就好像它們是用母語書寫的一樣。
我首先使用了COM interop,但現在我切換到了IJW(它正常工作),因爲它更簡單。我有一個包裝C++/CLR DLL(用/ clr編譯)。
一個簡單的例子(使用靜態打的電話更容易):
namespace MyClasses
{
public class MyClass
{
public static void DoSomething()
{
MessageBox.Show("Hello World");
}
}
}
在我可以引用命名空間如下的DLL:
using namespace MyClasses;
,並稱之爲:
__declspec(dllexport) void CallManagedCode()
{
MyClass::DoSomething();
}
現在您有一個非託管DLL導出「CallManagedCode」,它調用託管代碼。
當然,您還必須在託管/非託管邊界之間轉換數據。從VS2008開始,Microsoft包含一個用於在非託管和託管類型之間轉換的編組助手。請參閱http://msdn.microsoft.com/en-us/library/bb384865.aspx
您並不需要手動進入該路線。看看我的回覆中的鏈接。完全可以在C#中使用DllImport的對應部分,包括.NET中的所有編組優點。我的MSBuild任務在構建之後添加相應的vt-fixups,並且不需要部署另一個程序集... – 2010-04-27 13:00:30
我試過了:該DLL有導出。但是,我該如何使用它?我沒有找到.lib來允許我鏈接到DLL。 – 2010-04-28 12:33:32
我不使用C++,但我想它與任何不帶C/C++頭文件的庫都沒有任何區別:爲您想要導入的函數編寫頭文件。正如我所說,我不使用C++。這是從C或德爾福相當簡單。 – 2010-04-28 16:10:11
我使用的是C++/CLI包裝類described here,實現起來相對容易。
請在這裏發表一個解決方案或至少它的總結。該鏈接將來可能會被打破。而且在這裏閱讀所有解決方案也更容易。如果他們不止一個,你可以發佈他們作爲多個答案。謝謝! ;) – bluish 2015-09-15 14:12:41
- 1. 如何從託管C++ exe調用非託管C++ exe
- 2. 卡住調用從非託管C++調用託管CLI方法
- 3. 從C#調用非託管C++類DLL#
- 4. 從C調用非託管C++#
- 5. 調試託管的.NET代碼從非託管C++調用
- 6. C++ cli從非託管代碼調用託管代碼
- 7. 如何從託管C++調用非託管DLL
- 8. 調試MMC(非託管C++)?
- 9. C#託管的dll調用或非託管的dll調用?
- 10. 從(非託管)C++調用XLL
- 11. 調用從非託管C++/CLI
- 12. 從非託管C++調用PowerShell腳本
- 13. 從C調用非託管dll困難#
- 14. C++託管和非託管靜態庫
- 15. 混合託管/非託管C++?
- 16. 託管和非託管C++和Boost
- 17. Gdiplus在C++託管或非託管?
- 18. C++託管到非託管轉換
- 19. 將數據類型從C(非託管)映射到C#(託管)
- 20. 將二維數組從託管C++傳遞到非託管C++
- 21. 從非託管C Dll加載託管C++ Dll?
- 22. 從非託管C++調用託管代碼(c#)的最佳方法
- 23. 類未註冊....當試圖從非託管C++調用託管C#庫
- 24. 非託管char *數組託管System ::字符串託管C++
- 25. 從託管代碼調用非託管代碼的性能
- 26. 在非託管C++ dll中使用託管c#dll
- 27. 你能從一個非託管C++類派生一個託管C++類嗎?
- 28. 從c#傳遞字符串到非託管c#使用託管C++包裝
- 29. 非託管C#調用靜態庫
- 30. C#調用非託管代碼
看到http://stackoverflow.com/questions/1802929/how-can-we-use-net-dll-in-vc/1802952#1802952 – Henrik 2010-04-27 09:25:41