2010-01-18 2 views
2

Привет, я извиняюсь за беспокойство, я продемонстрирую вопрос:Экспорт с ++ функции внутри C# Применение

Я пытаюсь экспортировать некоторые функции, написанные на C++ в DLL, чтобы импортировать их в Приложение C#, работающее в Visual Studio. я делаю экспорт, как сообщается в следующем коде,

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 найдена, но когда Я открываю ее с помощью браузера объектов он полностью пуст, ни класс, ни объект не были экспортированы и готовы к использованию.

не могли бы вы мне помочь? спасибо С наилучшими пожеланиями

ответ

3

Как с помощью управляемого C++ для компиляции вашей DLL? Тогда вам просто нужно добавить реф к классу так:

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

       }; 
} 

После успешной компиляции и ссылки в другом проекте, класс должен быть виден. Экспорт родного C++ не очень портативный, каждый компилятор производит различные результаты и утомительно связать изнутри C# ...

EDIT: добавлен модификатором доступа общественности к иому классу ...

+0

Спасибо за ответ, я быть_наст используя управляемый C++ (в Visual Studio проект, содержащий код C++, является «библиотекой классов»), но даже с командой «ref» вместо экспорта он работает, данный результат полностью совпадает. [операция импорта возможна даже из-за того, что я ранее импортировал dll C++; Я создал свою новую dll, очень похожую на рабочую, но ничего хорошего не произошло ^^] Еще раз спасибо – Ricibald

+0

О, извините, я забыл сказать вам добавить публичный публичный класс ref .... Тогда я надеюсь, что все будет хорошо. В рефлекторе .NET видимость, вероятно, является частной или внутренней, я прав? – jdehaan

+0

он работает! благодаря! – Ricibald