2010-01-18 29 views
2

問候, 我打擾對不起,我帶你去一個問題:出口C++函數

我試圖出口用C++寫的DLL一些功能,以便將它們導入一個在Visual Studio上運行的C#應用​​程序。 我作出報道,在下面的代碼出口,

tobeexported.h:

namespace SOMENAMESPACE 
{ 
       class __declspec(dllexport) SOMECLASS 
       { 
           public: 
           SOMETYPE func(param A,char b[tot]); 

       }; 
} 

tobeexported.cpp:

#include "stdafx.h" 
#include "tobeexported.h" 
... 


using namespace SOMENAMESPACE; 

SOMETYPE SOMECLASS:: func(param A,char b[tot]) 
       { 
           ...some stuff inside... 
       } 

被righly創建的DLL和代碼已經CLR- (查看與反彙編軟件(反射)),幷包含導出的功能 然後我「添加引用」在我的C#應用​​程序和dll被發現,但當我用對象瀏覽器打開它時 它是完全空的,既沒有階級,也沒有對象被導出並準備使用

你能幫助我嗎? 謝謝 最好的問候

回答

3

如何使用託管C++來編譯您的DLL?然後,你只需要一個引用添加到類像這樣:

namespace SOMENAMESPACE 
{ 
       public ref class SOMECLASS 
       { 
           public: 
           SOMETYPE func(param A,char b[tot]); 

       }; 
} 

成功編譯之後,並在其他項目中引用的類應該是可見的。導出本地C++是不是真的便攜式,每個編譯器產生不同的結果,它爲單調乏味從C#中的綁定...

編輯:添加公共訪問修飾符來引用類...

+0

謝謝回答, 我使用託管的C++(在Visual Studio中,包含C++代碼的項目是一個「類庫」),但即使使用「ref」命令而不是導出它的作品,給定的結果也完全相同。 [即使因爲我以前導入了C++ dll,導入的操作也是可能的;我創建了我的新DLL真的類似於工作,但沒有什麼好發生^^] 再次感謝 – Ricibald 2010-01-18 11:52:20

+0

哦,對不起,我忘了告訴你也添加公共,'公共參考類...'。我希望那會工作得很好。在.NET反射器中,可見性可能是私有的或內部的,我是對的嗎? – jdehaan 2010-01-18 12:21:27

+0

它的工作原理!謝謝! – Ricibald 2010-01-18 13:30:25