为 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的主要内容,如果未能解决你的问题,请参考以下文章
添加jdplay aar时出现 UnsatisfiedLinkError错误