尽管链接到带有导​​出符号的 .lib 文件,但从托管 C++ 链接到非托管 C++ 时出现链接错误

2023-12-09

尽管关注了有关从 C++/CLI 包装器 dll 使用和链接到非托管 C++ 代码的各种帖子,但我无法解决这些链接问题。

1>MyClassAdapter.obj : error LNK2028: unresolved token (0A00000A) "public: __thiscall MyClass::~MyClass(void)" (??1MyClass@@$$FQAE@XZ) referenced in function "public: void * __thiscall MyClass::`scalar deleting destructor'(unsigned int)" (??_GMyClass@@$$FQAEPAXI@Z)
1>MyClassAdapter.obj : error LNK2028: unresolved token (0A00000B) "public: __thiscall MyClass::MyClass(void)" (??0MyClass@@$$FQAE@XZ) referenced in function "public: __clrcall WrapperLayer::MyClassAdaptor::MyClassAdaptor(void)" (??0MyClassAdaptor@WrapperLayer@@$$FQ$AAM@XZ)
1>MyClassAdapter.obj : error LNK2019: unresolved external symbol "public: __thiscall MyClass::MyClass(void)" (??0MyClass@@$$FQAE@XZ) referenced in function "public: __clrcall WrapperLayer::MyClassAdaptor::MyClassAdaptor(void)" (??0MyClassAdaptor@WrapperLayer@@$$FQ$AAM@XZ)
1>MyClassAdapter.obj : error LNK2019: unresolved external symbol "public: __thiscall MyClass::~MyClass(void)" (??1MyClass@@$$FQAE@XZ) referenced in function "public: void * __thiscall MyClass::`scalar deleting destructor'(unsigned int)" (??_GMyClass@@$$FQAEPAXI@Z)

我有一个带有简单类的非托管本机 C++ dll,相应地导出/导入符号

// MyClass.h
#ifdef _EXPORTING
   #define DLL_PUBLIC __declspec(dllexport)
#else
   #define DLL_PUBLIC __declspec(dllimport)
#endif

class DLL_PUBLIC MyClass { . . . };

我可以看到构建后生成的 .dll 和 .lib 链接器文件。

然后,我有托管的 C++/CLI 包装器项目(也是一个 dll),它链接到“链接器”->“输入”->“附加依赖项”设置中的 MyClass.lib。还在包装器项目中包含了 MyClass 中的 .h 文件,我可以看到 sln 可以看到 MyClass.h 文件。

// MyClassAdaptor.h

#include "MyClass.h"

namespace WrapperLayer
{
    public ref class MyClassAdaptor 
    { 
      . . . 
    private:
        MyClass* _myclass;  
    }; 
}

可能缺少什么?


几点:

  • 对 DLL 使用 Dependency Walker 并检查这些符号是否确实在 DLL 中。
  • 确保您使用正确的 lib 文件 - 32 位 LIB 不能用于 64 位构建。
  • 确保用于构建类的 .CPP 文件实际上是非托管文件(或者 DLL 本身作为一个整体是非托管文件)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尽管链接到带有导​​出符号的 .lib 文件,但从托管 C++ 链接到非托管 C++ 时出现链接错误 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 使用 Makefile 项目在 Visual Studio 中自定义调试命令

    我在 Visual Studio 2010 中有一个由 Makefile 支持的项目 实际上使用 NAnt 但这不是重点 构建过程的输出是一个 elf 文件 我有一个单独的非 VStudio 调试器 可以在该 elf 文件上运行来调试它 构
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 如何删除 BigQuery 中属于嵌套列的列

    我想删除 BigQuery 表中属于记录或嵌套列的列 我在他们的中找到了这个命令文档 不幸的是 此命令不适用于现有 RECORD 字段内的嵌套列 有什么解决方法吗 例如 如果我有这个架构 我想删除地址字段内的 address2 字段 所以由
  • 拦截 ESC 而不从缓冲区中删除其他按键

    我有一个控制台应用程序 提示用户进行多个输入 我希望用户能够在出现任何取消操作的提示后按转义键 就像是 if Console ReadKey Key ConsoleKey Escape string input Console ReadLi
  • 时间:2019-03-17 标签:c#updatepanelwithtimerpage_load

    我现在正在尝试一些 AJAX 我有一个自定义控件出现在我的母版页上 其中有一个更新面板和一个计时器 计时器启动 面板更新 一切都很顺利 除了我不希望它在每次刷新时执行一些操作之外 似乎每次刷新都会发生整个页面生命周期 我想设置一些变量 并在
  • 指数维护

    什么是索引维护以及如何进行 我需要多久做一次 有什么好处 这与经常修改的事务表有关 所有 DML 操作都将在该表上运行 我赞同乔纳森所说的一切 除了索引维护的频率 好吧 如果您碰巧有一个设计不佳的索引 例如 GUID 键上的聚集索引 您实际
  • 将 CURDATE() 的日期值与完整时间戳字段进行比较

    我有一个函数将时间戳值 YYYY MM DD HH MM SS 放入META VALUE表的列META 我想要做的是比较日期部分 YYYY MM DD 是否META VALUE等于今天 CURDATE 忽略小时 分钟和秒 HH MM SS
  • 尝试访问 Rails 控制台时 git 远程中的多个应用程序

    我有两个 git 分支 staging and production 我将它们部署在 Heroku 上的同一个 Heroku 帐户中 假设我的应用程序名称是app1 heroku app com and app2 heroku app co
  • 如何使用 ggplot2 在 R 中添加可变大小的 y 轴标签而不更改绘图宽度?

    我有一个用 R 中的 ggplot2 制作的图 我想在 y 轴上添加水平文本标签 然而 根据文本的长度 R 会相应地压缩我的绘图以创建固定宽度的图像 但是 无论文本宽度如何 我都需要绘图具有相同的长度并且具有相同的起始位置和停止位置 边距
  • Selenium:会话外部密钥不可用

    每当 Robot Framework 自动化测试 由 Jenkins 作业启动 从 Hub 请求 Chrome 浏览器时 我正在运行的 Selenium Grid Hub 就会显示此错误消息 会话 null externalkey 不可用且
  • Selenium:是否有类似“DOM 中插入新元素”之类的事件

    我正在测试的网站有一个通知逻辑 它会在屏幕底部显示一条消息 将其保留一秒钟 然后将其发送出去 当显示通知时 它会隐藏其他元素 这使我的测试不稳定 我尽力弄清楚通知何时显示 当业务逻辑显示通知时 并忽略它 但时不时地我会检测到我的代码不知道通
  • 如何将项目添加到列表

    我的项目中有模型 这是模型代码 public partial class Logging public string Imei get set public DateTime CurDateTime get set public Nulla
  • 在 Outlook 中自动调整 VML 背景图像的大小

    我知道关于防弹电子邮件背景hack 但由于这会在背景中放置一个设定大小的 VML 矩形 然后将内容放置在其中 因此它不会调整大小 或者换句话说 表格单元格中的文本被裁剪为 VML 矩形的高度 我已经尝试了我能想到的一切 但似乎无论如何都不允
  • 创建新实体时不会自动生成相对路由

    当我使用命令 jhipster实体 entityName 创建新实体时 相对路径不会在我的 entityName route ts中自动生成 相反 在主路线的地方我有这个 而不是 实体名称 另外 所有添加 更新 删除的路由也不包含前缀 en
  • AChartEngine不显示最大图表值

    我正在尝试使用 AChartEngine 显示水平条形图 在条形图中 应显示 ChartValues 我在代码中使用 XYSeriesRenderer setDisplayChartValues true 以下是渲染的图表 正如您所看到的
  • 使用 QTcpSocket 的 TCP 数据包

    我知道 TCP 保证所有数据包都会到达 但是一个数据包可以分成2个或更多吗 我正在使用 Qt 和 QTcpSocket 类 我想知道的是ReadyRead 仅当完整数据包到达时才会发出信号 或者换句话说 以第一个字节发送数据包大小 然后循环
  • 来自资源包的值作为 formatDate 中的模式

    我也想从资源包中读取 JST formatDate 的模式 但这种天真的方法不起作用 我做错了什么 在 com company MyPortlet properties 中是这个键 company date format yyyy MM d
  • 在 UICollectionView 或 UITableView 中实现粘性单元格

    我要实现一个包含项目列表的表格 其中包括一个应始终显示在屏幕上的项目 因此 例如 您的列表中有 50 项 您的 粘性 列表项是第 25 个 您可能会同时在屏幕上显示 10 个项目 无论您在列表中的位置如何 粘性 列表应始终保持可见 如果您的
  • 为什么使用 cudaMallocManaged 时 NVIDIA Pascal GPU 运行 CUDA 内核的速度很慢

    我正在测试新的 CUDA 8 以及 Pascal Titan X GPU 并期望我的代码能够加速 但由于某种原因 它最终变得更慢 我使用的是 Ubuntu 16 04 这是可以重现结果的最少代码 CUDASample cuh class C
  • android XML视图在Eclipse中不显示ToggleButton

    在我的 android XML 图形布局中 我无法显示我的ToggleButton 我收到一些错误 见下文 另外 我无法使用图形布局编辑其他任何内容
  • Cucumber Java - 如何在下一步中使用返回的字符串?

    我需要自动化一些网络服务 我为此创建了一些方法 并且我想使用 Cucumber 来实现这一点 但我不知道如何在下一步中使用返回值 所以 我有这个功能 Feature Create Client and place order Scenari
  • 尽管链接到带有导​​出符号的 .lib 文件,但从托管 C++ 链接到非托管 C++ 时出现链接错误

    尽管关注了有关从 C CLI 包装器 dll 使用和链接到非托管 C 代码的各种帖子 但我无法解决这些链接问题 1 gt MyClassAdapter obj error LNK2028 unresolved token 0A00000A