Swig C++/ C# продолжает получать "Исключение инициализированного типа"
Я в настоящее время создаю свой первый проект Swig. У меня есть некоторый код C++, где я использую 1 из функций классов в моем C# UI. Я создал.i файл, который выглядит примерно так:
%module mymodule
%{
#include "Simulation.h"
%}
/*****************************************************************************
* SOME DEFINITIONS *
*****************************************************************************/
#define EXAMPLE_DEFINITION 'a'
#define EXAMPLE_DEFINITION_2 'x'
class Simulation
{
public:
// BUNCH OF FUNCTIONS
static unsigned int getTick();
static void tick();
// BUNCH MORE FUNCTIONS
private:
// A BUNCH MORE THINGS
};
Я добавил файлы cs, используя:
swig -c++ -csharp -outdir UI -o cpp/simulation_wrap.cpp Simulation.i
Он создает несколько файлов, которые я добавляю в мой проект на C#. в моем коде, если я добавлю строки:
Simulation.getTick();
или же
Simulation.tick();
Я не получаю ошибок компиляции, но следующая ошибка времени выполнения:
The type initializer for 'mymodulePINVOKE' threw an exception.
я пропустил какие-либо шаги? Я пытался найти это, но не смог добиться успеха.
(Возможно, важно отметить, что я попытался скомпилировать C++ как dll и lib).
заранее спасибо
1 ответ
То, что работало для меня, было:
- добавьте ####. cxx в C++ проект и пересоберите, чтобы получить новый dll(возможно, вам нужно исправить ошибку)
- Скопируйте этот новый файл DLL в [C#]\bin\x86\Debug (Release).
Перейдите в Build->Configuration Manager. Для проекта C# измените AnyCpu на x86 и пересоберите.