私は現在、最初のswigプロジェクトを作成しています。C# UI でクラス関数の 1 つを使用している C++ コードがいくつかあります。次のような .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 としてコンパイルしようとしたことに注意することが重要です)。
前もって感謝します