gpt4 book ai didi

c# - Swig c++/c# 不断获取 "Type Initialized Exception"

转载 作者:行者123 更新时间:2023-11-30 03:06:32 25 4
gpt4 key购买 nike

我目前正在创建我的第一个 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. 将####.cxx 添加到c++ 项目并重建以获得新的dll(也许您需要更正一些错误)
  2. 将新的 dll 文件复制到 [C#]\bin\x86\Debug(发布版)。
  3. 转到“构建”->“配置管理器”。对于 C# 项目,将 AnyCpu 更改为 x86 并重新构建。

    Reference

关于c# - Swig c++/c# 不断获取 "Type Initialized Exception",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6455484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com