我有一箇舊的C/C++類,我想重構和.NET中使用的PInvoke反向P /調用教程?
全部P訪問/調用教程是指調用Win32 API的,但我沒有發現任何其他端代碼
任何提示/想法?我的C/C++的經驗是很生疏:(
更新 - 這是用於包裝現有的C/C++代碼,以便它可以從.NET,使用P叫/調用
如何定義的C函數,以便從。我可以使用ref/out字符串獲得值
我有一箇舊的C/C++類,我想重構和.NET中使用的PInvoke反向P /調用教程?
全部P訪問/調用教程是指調用Win32 API的,但我沒有發現任何其他端代碼
任何提示/想法?我的C/C++的經驗是很生疏:(
更新 - 這是用於包裝現有的C/C++代碼,以便它可以從.NET,使用P叫/調用
如何定義的C函數,以便從。我可以使用ref/out字符串獲得值
這裏你可以找到幫助
C++ Interop
Walkthrough: Porting an Existing Native C++ Application to Interoperate with .NET Framework Components
Use Our ManWrap Library to Get the Best of .NET in Native C++ Code
How to call C++ code from Managed, and vice versa (Interop)
第二個鏈接很好,但停止了對如何獲取對.net /託管代碼的字符串的引用的示例! – Kumar 2010-06-09 20:04:36
根據我的經驗,最簡單的方法是將您的C++類變爲COM類(或者爲此創建一個輔助類),然後在其中添加對其的引用.NET項目
如果您想從C++訪問.NET對象,則情況正好相反,請將其標記爲ComVisible
並使用tlbexp爲導入的本機代碼創建一個TLB(然後您可以將其用作常規COM對象)。
使它兼容將是我的頭 這基本上是讀取一些自定義的二進制數據,所以pinvoke似乎最簡單,如果我能弄清楚如何返回ref/out字符串 – Kumar 2010-06-09 19:24:49
@Kumar,你不必做出整體類COM兼容,只需使用調用此本機函數的一個函數創建一個小COM對象即可。否則,你可以使用P/Invoke,你試過'[MarshalAs(UnmanagedType.LPStr)] out string s'? – Motti 2010-06-10 05:47:53
我是一個VC++新手,任何關於如何獲得的指針/示例,沒有顯示在谷歌搜索com兼容類等。 – Kumar 2010-06-10 14:12:05
我很困惑。您是否試圖從C#調用C/C++ DLL(除了win32 API)或試圖從C/C++調用C#代碼? – 2010-06-09 18:54:27
什麼是C/C++類?你不能直接在P/Invoke中使用C++類,需要一個包裝器。 – 2010-06-09 19:21:51
我正在嘗試重寫現有的c/C++代碼,以便可以從.net中調用.net – Kumar 2010-06-09 19:21:59