Я бы порекомендовал вам сделать это документированным способом вместо того, чтобы полагаться на недокументированный взлом автора, который не предоставляет поддержку. Давайте сделаем это с примером:
namespace Publics {
public class Class1 {
public static void Run() {
// Stuff...
}
}
}
Добавить новую библиотеку классов C++/CLI в ваш проект. Щелкните правой кнопкой мыши решение, Добавить, Новый проект. Откройте узел «Другие языки», Visual C++, CLR и выберите шаблон проекта «Библиотека классов». Щелкните правой кнопкой мыши новый проект «Свойства», «Общие свойства», «Структура и ссылки», нажмите кнопку «Добавить новую ссылку». На вкладке «Проекты» выберите проект C#, метод (ы) которого вы хотите экспортировать.
Удалить предварительно созданный пустой класс с // TODO комментариев и писать подобный код:
extern "C" __declspec(dllexport)
void __stdcall Example()
{
Publics::Class1::Run();
}
Построить свое решение. Убедитесь, что функция Example экспортирована, запустив dumpbin.exe/exports в DLL.Вы должны увидеть что-то похожее на это:
1 0 00001020 [email protected] = [email protected]
Beyond имени и вызовы, теперь также есть много вариантов, чтобы настроить экспортируемую функцию. Если вы хотите экспортировать метод экземпляра вместо статического метода вы могли бы написать функцию, как это, например:
extern "C" __declspec(dllexport)
void __stdcall Example()
{
Publics::Class1^ obj = gcnew Publics::Class1;
obj->Run();
}
Etcetera, некоторое знакомство с языком C++/CLI требуется, если вы собираетесь сделать это сложный , И последнее, но не менее важное: вы также, вероятно, узнаете, что пошло не так в вашей первоначальной попытке сделать работу редактора Jiesecke IL. В противном случае используется тот же метод, который использует компилятор C++/CLI для экспорта управляемого метода.
Вы также можете использовать http://www.dependencywalker.com/ для просмотра экспортируемых функций. Раньше я использовал вышеупомянутый подход, но трудно сказать, что может произойти неправильно, без дополнительной информации. Вероятно, нужно будет увидеть, как весь проект отлаживает то, что происходит неправильно. –