2010-01-18 5 views
2

인사말, 내가 질문 보여 드리죠, 귀찮게 미안 해요 : 나는 그들을 가져 오기 위해 DLL에서 C++로 작성된 일부 기능을 수출하려고수출 C++ 기능

을 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... 
       } 

DLL이 righly 생성하고 코드가 이미 있습니다 CLR- (반사 된 소프트웨어로 보임) 내 보낸 함수가 포함되어 있습니다. 그러면 C# 응용 프로그램에 "참조 추가"가 나타나고 dll이 발견되지만, 개체 브라우저로 열 때 그것은 완전히 비어 있으며, 클래스도 객체도 export되어 사용 준비가되어 있지 않습니다.

저를 도와주세요. 감사합니다. 감사합니다.

답변

3

DLL을 컴파일하는 데 managed C++를 사용하는 것은 어떻습니까? 성공적으로 컴파일 후

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

       }; 
} 

을 다른 프로젝트에서 참조하는 클래스가 표시되어야합니다 : 그럼 그냥 같이 클래스에 심판을 추가해야합니다. 심판 클래스에 추가 공용 액세스 수정 ... 답변

+0

감사합니다, 나는 : 네이티브 C의 ++ 내보내기 정말 휴대용 아니라, 각 컴파일러는 ...

편집을 다른 결과를 생성 및 C# 내에서 결합하는 지루한 관리되는 C++ (Visual Studio에서 C++ 코드가 포함 된 프로젝트는 "클래스 라이브러리"임)를 사용하지만, 내보내기 대신 "ref"명령을 사용하더라도 주어진 결과는 완전히 동일합니다. [이전에 C++ dll을 가져 왔으므로 가져 오기 작업이 가능합니다. 나는 새로운 dll을 정말로 만들었지 만 좋은 일은 없다. ^^] 감사합니다. – Ricibald

+0

오, 죄송합니다. public,'public ref class ... '도 추가하는 것을 잊어 버렸습니다. 나는 그것이 잘 작동 할 것이라는 점을 그 때 희망한다. .NET 리플렉터에서 가시성은 아마도 개인 또는 내부입니까? – jdehaan

+0

그것이 작동합니다! 감사! – Ricibald