Swig c ++ / c # продолжает получать «Исключение инициализированного типа» - PullRequest
1 голос
/ 23 июня 2011

Я сейчас создаю свой первый проект 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 Ответ

3 голосов
/ 27 ноября 2012

Что сработало для меня, так это:

  1. добавить ####. Cxx в проект c ++ и пересобрать, чтобы получить новый dll (возможно, вам нужно исправить ошибку)* Скопируйте этот новый файл DLL в [C #] \ bin \ x86 \ Debug (Release).
  2. Зайдите в Build-> Configuration Manager.Для проекта C # измените AnyCpu на x86 и перестройте.

    Ссылка

...