为 C# 使用 swig 时出现 TypeInitializationException

Posted

技术标签:

【中文标题】为 C# 使用 swig 时出现 TypeInitializationException【英文标题】:TypeInitializationException when using swig for C# 【发布时间】:2012-01-15 20:59:34 【问题描述】:

我正在为一个 c# 项目使用 C++ 框架,并使用 swig 来连接它们。

问题是每次尝试创建 C++ 对象包装器时都会抛出TypeInitializationException

C#代码

TRPoint p = new TRPoint();

TRPoint 是一个 C++ 结构

typedef struct 
    float x, y;
 TRPoint;

详情:

我有一个将 c++ 代码构建到 DLL 文件中的 vc 项目,但我不知道如何正确链接它。

【问题讨论】:

点击查看详情。 Swig 变得喜忧参半,当您遇到您不理解的异常时,调试您不理解的代码并不令人愉快。慢慢来。 @M.Babcock 我已经更新了问题。 看起来您缺少一个 pinvoke 的 dll。 问题是我没有把DLL放到正确的地方导致找不到。 【参考方案1】:

异常显示“无法加载 DLL” - 听起来您已经生成了 SWIG 生成的 not built the C++ code,或者如果构建它可能会出现路径问题。

【讨论】:

我已将 C++ 代码构建为 DLL 文件,但我们无法使用 DllImport 加载它。 FAQ 的链接应该更新到这个:github.com/swig/swig/wiki/FAQ#shared-libraries

以上是关于为 C# 使用 swig 时出现 TypeInitializationException的主要内容,如果未能解决你的问题,请参考以下文章

Swig:包装全局静态常量时出现语法错误

编译 SWIG 输出的包装器模块时出现 6 个错误?

添加jdplay aar时出现 UnsatisfiedLinkError错误

使用 C# 和 XAML 为 Windows 8.1 创建 facebook 应用程序时出现异常

SWIG包装器未声明(此功能首次使用)

将字符串转换为短 C# 时出现格式异常