2013-03-02 95 views
0

我昨天問過這個問題有關使用Cygwin的編譯器生成可通過.NET可以使用C++ DLL:Using C++ app in .NET使用C++ DLL在.NET

的解決方案是使用Visual C編譯C++應用程序++,而不是Cygwin即我能夠從.NET調用C++函數。

爲什麼我能夠在Visual C++而不是Cygwin中做到這一點?代碼可以在我的鏈接問題中找到。這裏是扶養沃克在Visual C++ DLL的屏幕截圖的情況下,它可以幫助回答我的問題:

enter image description here

+1

也許這個問題涉及到的cygwin依賴未能在DLL加載時間得到解決:

另外,在底部的答案是描述這個問題,你可以使用.DEF文件。或者,也許cygwin DLL不喜歡託管在一個託管過程中。 – 2013-03-02 11:04:35

+2

[參考GNU C(POSIX)DLL在GCC中針對Cygwin構建,來自C#/ NET](http://stackoverflow.com/questions/2710465/reference-a-gnu-c-posix-dll-built- in-gcc-against-cygwin-from-c-net)這個問題似乎描述了一個與你的情況相同的場景。我期望這回答你的問題。 – 2013-03-02 11:06:35

回答

0

名稱重整方案是在gcc/MinGW的/ Cygwin和MSVS不同。如果要在編譯器之間共享DLL,則必須使用純C接口。 How to use libraries compiled with MingW in MSVC?

+0

謝謝,但是我沒有提供的屏幕截圖顯示函數名稱沒有被管理,即它是:hello。? – w0051977 2013-03-02 12:29:58

+0

呵呵,那麼你有兩個問題,第一個是當你從mingw來的時候,有一個名字是mangling問題,第二個是從託管代碼中調用非託管代碼。第二個很簡單,但很煩人。這篇文章是幾年,但顯示該怎麼做: http://www.c-sharpcorner.com/uploadfile/tanmayit08/unmanaged-cpp-dll-call-from-managed-C-Sharp-application/ – 2013-03-02 12:51:43

+0

謝謝,你最後的評論說:「有一個名稱mangling問題」。我的問題中的屏幕截圖沒有顯示沒有?我對C++互操作性很陌生,所以我顯然缺少一些東西。 – w0051977 2013-03-02 13:03:06