- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 VS2010 解决方案,其中包含(除其他外)以下项目:
伪代码(非常简化):
using namespace std;
bool Native::CalcSomething(double* result, string& errorMsg);
伪代码(非常简单)
bool Wrapper::WrappedCalcSomething([System::Runtime::InteropServices::OutAttribute] double[] result,[System::Runtime::InteropServices::OutAttribute] System::String^ errorMsg)
{
Native* ntv = new Native();
std:string error;
pin_ptr<double> resultPtr = &result[0];
bool success = ntv->CalcSomething(resultPtr, error);
errorMsg = gcnew System::String(error.c_str());
return success;
}
这在 VS2008 (x64) 中编译和链接完美,但在迁移到 VS2010 后(由于各种原因),链接器给出以下错误:
2> Generating Code...
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.logic_error): (0x02000049).
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.domain_error): (0x0200004a).
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.invalid_argument): (0x0200004b).
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.length_error): (0x0200004c).
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.out_of_range): (0x0200004d).
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.runtime_error): (0x0200004e).
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.overflow_error): (0x02000050).
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.underflow_error): (0x02000051).
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.range_error): (0x02000052).
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._Locinfo): (0x02000054).
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (_Locimp): (0x02000059).
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (failure): (0x02000068).
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_val<char,std::allocator<char> >): (0x02000097).
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std._String_val<wchar_t,std::allocator<wchar_t> >): (0x02000099).
2>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (lconv): (0x020000ce).
2>LINK : fatal error LNK1255: link failed because of metadata errors
我已经阅读了几乎所有我能找到的关于这个问题的帖子,并尝试过:
我能想到的唯一“解决方案”是将 Native.DLL 中的方法更改为不使用 std:string 作为参数(例如,改用 char*)。然而,避免在任何 C++/CLI 包装器中使用 STL 似乎不是一个解决方案。 一定有更好的方法!
注意:我知道关于如何“调试”这些问题的文章 (link),但除非我弄错了,否则我想我知道问题的根源是 std:string。
最佳答案
我想通了。
我对其中一个 CMake 文件进行了语法更改,我认为它在功能上与之前发生的相同(本质上我使用的是 CMake 便利变量)。然而,这当然会产生意想不到的后果,并且生成的项目文件不一样。
具体来说,Wrapper.DLL 项目现在链接到它根本不需要链接到的第 3 方 ITK 库(只有 Native.DLL 需要这些)。
在改回 CMake 并正确生成项目后,可怕的 LNK2022 消失了。我只能怪我自己浪费了所有这些时间......
关于c++ - LNK 2022 : Inconsistent layout information, 迁移到VS2010后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15745762/
Win32 的 Delphi XE5 编译器具有新的调试信息设置:有限调试信息。 有限调试信息和调试信息有什么区别? 最佳答案 某些编译器提供调试标志的变体,可提供不同级别的调试信息和优化。根据编译和
我有一个 highcharts 散点图,我想添加一些自定义功能。对于每次单击 highcharts 中的项目(单击过滤器、数据点和关闭按钮),我想将有关单击的项目的信息发送到我在下面包含的函数“s”。
我们在 Java 应用程序中更新了安全证书,突然我们开始收到下面提到的异常: java.lang.SecurityException: class "org.hibernate.cfg.Configu
我正在使用 HttpURLConnection 实例来连接到 URL。 然后我调用 getResponseCode 方法以确定连接状态。 我正在使用此方法轮询连接,直到返回的响应代码不是 1xx: H
我很难调试 ASP.NET MVC 代码。我最终按照本 website 中的描述进行操作.调试符号已加载并适用于所有 dll,但 System.Web.MVC。当我双击 stacktrace 窗口中的
好吧,我在很多应用程序上都发现了这个文本,那就是当我安装一些应用程序时需要android.permission.READ_LOGS 权限,它们显示一些文本,例如“读取敏感日志数据的权限...”我不明白
我有一个在浏览器中运行并从 Javascript 调用的小程序。有 2 个类:PortalLauncher 和 ParamSplitter,它们位于默认包中。 Javascript 调用 Portal
我在 eclipse 中使用 OSGi 项目运行 JUnit 测试,我遇到了这个异常: java.lang.SecurityException: class "org.eclipse.core.run
我正在开发一个给 PDF 加水印的小工具,它适用于某些 PDF,但对某些其他 PDF 会崩溃。 我正在使用 iText 库和 bouncycaSTLe(依赖项) pom.xml:
很抱歉,我不知道这是否是属于mathoverflow的数学问题,还是属于这里的计算机科学问题。 就是说,我相信我理解基本的difference between data, information, a
在什么情况下“反文档频率”在信息检索中不起作用? 最佳答案 如果您不希望在系统中权衡稀有术语而不是频繁出现的术语,则可能不希望使用IDF。此外,计算idf是一项昂贵的操作。从以下事实可以明显看出这一点
我正在尝试计算 Average Precision (和 Mean Average Precision )在 Oxford Building image dataset 上. 下面是他们提供的用于计算
信息隐藏如何帮助解耦构成系统的模块? 最佳答案 封装(信息隐藏)允许您只向外界公开绝对最小值。这意味着您可以在不影响客户的情况下将未公开的位更改为您心中的内容。 一个例子。假设您已经实现了一个将字符串
想象一下,在接下来的 10 年里,你拥有世界上所有的 super 计算机。你的任务是尽可能无损地压缩 10 部完整的电影。另一个标准是普通计算机应该能够即时解压缩,并且不需要花费太多的 HD 来安装解
我生活在一个每年更改两次时间的国家。即:一年中有一段时期与 UTC 的偏移量为 -3 小时(-180 分钟),其他时期的偏移量为 -4 小时(-240 分钟) 从图形上看: |-----
在哪里可以找到有关 DrRacket 中 #:when 构造的文档? 这是完整的示例: (define (problem_9 sum) (for*/first ([c (in-range 3 (-
有人知道在网站上查找最相关的联系信息的脚本/食谱/库吗? 一些可能的情况: 在个人网页上查找联系电话号码 在博客上查找所有者电子邮件地址 查找联系页面的网址 最佳答案 查看WSO2's Mashup
你们如何管理信息溢出?你们都用什么工具?有用的工具之一是 RSS 提要阅读器。是否有任何机构使用任何其他工具或任何其他方式来有效管理信息? 最佳答案 做一个信息势利小人。 如果该博客没有绝对震撼您的世
我最近根据 Artima Inside the JVM 2-nd Ed 阅读了有关 JVM 规范的内容。其中一章提到了 Java 运行时中的类型存储,内容如下: An instance of clas
我已阅读 Permuterm indexes stanford 网站上的页面,但是我仍然无法弄清楚我们如何从以下地址到达:*X*至 X* . 那么$在哪里? ? 我可以得到这些: For X, loo
我是一名优秀的程序员,十分优秀!