Swig c ++ / c#继续获取“Type Initialized Exception”

时间:2011-06-23 14:14:22

标签: c# c++ swig quantlib-swig

我目前正在创建我的第一个swig项目。我有一些c ++代码,我在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 个答案:

答案 0 :(得分:3)

对我有用的是:

  1. 将####。cxx添加到c ++项目并重建以获取新的dll(可能需要更正一些错误)
  2. 将新的dll文件复制到[C#] \ bin \ x86 \ Debug(Release)。
  3. 转到Build-> Configuration Manager。对于C#项目,将AnyCpu更改为x86并重建。

    Reference