LNK2028 托管 C++ DLL 在另一个托管 C++ DLL 中调用函数

2024-05-18

我正在将 VS2010 与托管 C++ DLL 一起使用,调用另一个托管 C++ DLL 中的函数,并且我得到了很多LNK2028 http://msdn.microsoft.com/en-us/library/ms235590%28v=vs.80%29.aspx链接错误看起来像这样。

1>udpPkt.obj : error LNK2028: unresolved token (0A0000AA) "unsigned short __cdecl ComputeCrc16(void const *,unsigned int)" (?ComputeCrc16@@$$FYAGPBXI@Z) referenced in function "public: short __thiscall CPrivateUdpPkt::ComputeCrc(void)const " (?ComputeCrc@CPrivateUdpPkt@@$$FQBEFXZ)

当我使用转储箱/导出在被调用的 DLL 上,我看到未解析的函数列出为:

7 6 00001040 ?ComputeCrc16@@YAGPBXI@Z = ?ComputeCrc16@@YAGPBXI@Z (  unsigned short __cdecl ComputeCrc16(void const *,unsigned int))

将转储中列出的函数原型与错误消息中列出的函数原型进行比较,扩展原型似乎匹配,但损坏的名称不匹配。

err ?ComputeCrc16@@$$FYAGPBXI@Z unsigned short __cdecl ComputeCrc16(void const *,unsigned int)
dump?ComputeCrc16@@YAGPBXI@Z    unsigned short __cdecl ComputeCrc16(void const *,unsigned int)

In the LNK2028 http://msdn.microsoft.com/en-us/library/ms235590%28v=vs.80%29.aspx链接它提到了使用 __clrcall 调用 _cdecl 的问题,但它说在调用导出的本机函数时会发生这种情况,但它没有描述如何解决该问题。此外,我正在使用 /clr 编译被调用的 DLL 和调用 DLL,因此根据我的理解,调用函数或被调用函数都不应该是本机函数。

调用代码如下所示

unsigned short __declspec(dllimport) ComputeCrc16(const void * i_pData, size_t i_nBytes);

short CPrivateUdpPkt::ComputeCrc() const
{
    const Byte * pByte = reinterpret_cast<const Byte *>(&m_Crc) + sizeof(m_Crc);
    size_t len = &m_aData[DataLen()] - pByte;
    return ComputeCrc16(pByte, len);
}

被调用的函数如下所示:

unsigned short __declspec(dllexport) ComputeCrc16(const void * i_pData, size_t i_unNumBytes)
{
...
}

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LNK2028 托管 C++ DLL 在另一个托管 C++ DLL 中调用函数 的相关文章

  • MFC CImage alpha 混合出错

    我必须在图片控件上呈现由两个 PNG 文件组成的图像 其中顶部图像在某些位置具有透明像素 结果应该是plotter png 与 bar png 顶部重叠显示为 注意条上奇怪的白色轮廓 但应该是 我为它编写的代码很简单 CImage imag
  • matlab mex 文件和 C++ dll (Windows)

    我有一个带有 Test 类的 DLL 标题 class MY EXPORT Test public int doit const string str 和来源 int Test doit const string str return in
  • 链接 C++ 和 C++/CLI 项目 (.NET Core) 时导入错误 (E0337)

    我目前正在尝试建立一个 NET 项目 我有一个现有的 C 后台项目 我想将其显示在 Web 界面上 为此 我尝试通过以下方式将我的 C 链接到 NET 平台 CLR 类库 NET Core 并最终将其链接到ASP NET 网络界面但这是下一
  • dll:静态链接与隐式链接,一样吗?

    关于Dll链接 静态链接和隐式链接是一回事吗 我理解隐式链接和显式链接之间的区别 并且我认为静态与隐式链接同义 但我不确定 如果它们确实不同 它们之间有什么区别 以及我如何指定我想要哪一个 this link http msdn micro
  • F#:Microsoft.FSharp.Data.TypeProviders 是否需要配置文件 47?

    这是后续我昨天的帖子 https stackoverflow com questions 30399773 f fsc error fs2024 static linking may not use assembly that target
  • 如何使用 Visual C++ 在 win32 API 中创建圆形/圆形按钮

    我有一个 Visual C 中的 Window Win32 API 应用程序 我没有使用MFC 我必须创建一个带有位图图像的圆形 圆形按钮 我的应用程序有一个皮肤视图 任何人都可以帮助我完成这项任务吗 按钮是窗口 您可以使用 CreateW
  • 有效地调用非托管方法,将非托管对象作为托管代码的参数

    我有以下场景 托管代码将初始化类的许多对象 该类是非托管结构的包装器 为此我可以采用两种方法 一种是拥有一个托管类包装器 它只有一个指向非托管对象的指针 另一种是拥有一个成熟的托管类 并在需要调用非托管方法时创建非托管对象 我已经提供了以下
  • 使用 xerces 链接 DLL 会给出未定义的符号

    我正在使用 cygwin 创建一个共享库 DLL 它使用 Xerces 当我从主应用程序调用 xercesc 函数时 一切都很好 但是当我尝试将一些代码放入库中时 我会得到 xerxesc 定义的所有静态内容的未定义符号 例如 std st
  • crt0 是否加载 msvcrt.dll?

    我想弄清楚标准 C 函数是什么样的printf 在 Windows 环境下加载到内存中 我知道crt0 obj准备堆栈 调用int main int argc char argv 然后使用 main 返回的退出代码退出进程 我还听说 C 标
  • Oracle DataAccess 相关:“动态程序集中不支持调用的成员。”

    据我了解 此类错误已在 SO 上讨论过多次 有些人认为这是 DLL 文件中的错误 有些人通过更改 DLL 版本来解决 其他人似乎没有任何线索 无论如何 我只是发帖试试运气 在 C GUI 上的网格中选择一行时 我的应用程序崩溃了 stack
  • 编译过程

    谁能解释一下编译是如何工作的 我似乎无法弄清楚编译是如何工作的 更具体地说 这是一个例子 我正在尝试在 MSVC 6 中编写一些代码来加载 Lua 状态 我已经 设置库的附加目录并将文件包含到正确的目录中 使用 extern C 因为 Lu
  • nmake 无法使用 VS 2012 编译 TSF 示例

    我正在尝试建立文本服务框架示例代码 http archive msdn microsoft com tsf Release ProjectReleases aspx ReleaseId 1755在 Windows 8 RC 64 位上使用
  • 如何调试 .NET 中的 System.TypeLoadException 错误?

    我在引用的程序集之一上收到以下错误 Could not load type System Func 2 from assembly MyAssembly 我的第一直觉是看看是什么MSDN 不得不说一下 http msdn microsoft
  • 为什么某些 dll 静态链接存根库(导入库)如此大?

    我在链接到 pcl 点云库 时注意到 一些 dll 存根库的大小超过 10MB 而 dll 本身的大小还不到该大小的一半 这些是发布版本 难道存根库不应该只包含最少的信息以便可以访问 dll 信息吗 怎么会比他们引用的dll文件大呢 对我来
  • 将 Scala 库转换为 DLL (.NET)

    我正在尝试从 scala 类创建一个 Dll 我将 IntelliJ 与 SBT 一起使用 我已经找到了一种使用 ikvm converter 将 jar 文件转换为 Dll 的方法 现在的问题是 当我在 SBT 下使用 package 从
  • 有没有工具可以检测 Visual C++ 6.0 上的缓冲区溢出? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 由于堆问题 我一直遇到崩溃问题 所以我猜想某个地方发生了缓冲区溢出 我如何检测它 I use Compuware 边界检查器 http w
  • 这个程序有什么问题?

    include
  • 如何将tchar指针转换为char指针

    我想将 tchar 转换为 char 这可能吗 如果是的话该怎么做 我使用unicode设置 A TCHAR要么是一个普通的char or a wchar t取决于您的项目的设置 如果是后者 您需要使用WideCharToMultiByte
  • ctypes 加载 dll 时没有错误消息,但什么也没发生

    我尝试在ctypes中使用windll LoadLibrary将dll文件导入python 尽管没有任何错误消息 但头文件中列出的函数似乎都没有成功加载 我想知道是dll文件有问题 还是我错误地使用了windll LoadLibrary方法
  • 如何在 Visual C++ 中读取版本资源

    我在 C 项目的资源中有一个版本资源 其中包含版本号 版权和构建详细信息 有没有一种简单的方法可以在运行时访问它来填充我的帮助 关于对话框 因为我目前正在维护此信息的单独常量值 理想情况下 该解决方案应适用于 Windows CE mobi

随机推荐

  • jruby 的路边(卷曲)?

    我正在尝试将curl 与jruby 结合使用来获得网页 文件的一些响应时间 通常在 ruby 中这不会是一个问题 我可以安装 gem gem install junction 一切都很好 遏制似乎与 jruby 不兼容 那么有没有一种替代方
  • Android:我可以创建一个不是矩形的视图/画布吗?圆形的?

    我有一个圆形视图 悬停在主要内容上方 gt 从屏幕出来的 z 轴方向 当有人点击屏幕时 我希望选择主要内容或悬停在上方的视图 当它覆盖主视图时 到目前为止效果很好 我在透明画布上有一个圆形物品 这意味着您可以看到该圆圈之外的背景的所有内容
  • 在 Java(TM) Platform SE 二进制文件中打开

    我尝试删除一个文件 其中有两个文件 其中一个略有更改 因此我可以删除旧文件并将其替换为我更改的新文件 当我尝试删除该文件时 收到错误消息 文件正在使用 其中表示该操作无法完成 因为该文件是在 Java TM Platform SE 二进制文
  • 确定 Objective-C 方法在运行时是否是可变的

    有没有办法在运行时找出给定方法是否是可变参数类型 就像是method getTypeEncoding 这不会告诉我一个方法是否接受可变数量的参数 或者有什么技巧可以告诉我们吗 罗伯特的评论是正确的 考虑 interface Boogity
  • 如何使用脚本在 GitHub 上发布构建工件资产?

    我正在尝试找出一种在 GitHub 上生成构建的单命令流程 我预计要做的是运行某种命令 比如 make release make release 脚本会构建发布工件 然后以某种方式将其上传到 GitHub 然而 我对如何在 GitHub 上
  • 如何在 pandas 中读取并标准化以下 json?

    我在 stackoverflow 中使用 pandas 看到了很多 json 读取问题 但我仍然无法解决这个简单的问题 Data session id 0 X061RFWB06K9V 1 5AZ2X2A9BHH5U unix timesta
  • 如何将此数据编码为 JSON 中的父/子结构

    我正在使用 d3 js 将动物 有机体 家族 一次最多 4000 个 可视化为树形图 尽管数据源也可以是目录列表或命名空间对象列表 我的数据如下 json organisms name Hemiptera Miridae Kanakamir
  • strtok - 如何避免换行并放入字符串数组?

    如果我欺骗了主题 我真的很抱歉 我在这里搜索但没有结果 我有代码 void split char str char splitstr char p char splitbuf 32 int i 0 p strtok str while p
  • 使用 NSError 检查错误的正确结构

    我正在编写各种例程 并尽力保持其整洁和重构 我正在创建的方法开始看起来与此代码类似 IBAction buttonPress id sender Create Document Shopping List with this documen
  • 如何在没有互联网连接的情况下安装 NuGet 包?

    目前我正在一台不允许访问互联网的虚拟电脑上进行开发 我设法获取 NuGet Tools vsix 将 NuGet 添加到 Visual Studio 2010 但似乎无法找出如何离线部署 NuGet 包 例如 我下载了EntityFrame
  • 如何在 iOS 中更改部分透明图像的颜色?

    我有一个具有部分透明度的单色图像 我有正常版本和 2X 版本的图像 我希望能够用代码将图像着色为不同的颜色 下面的代码适用于普通图像 但 2X 最终会出现伪影 正常图像可能有类似的问题如果是这样 由于分辨率的原因我无法检测到它 UIImag
  • 检查 paypal 电子邮件地址是否是经过验证的用户

    我想在购买之前检查尝试从我的网站购买商品的 PayPal 用户是否拥有经过验证的帐户 一旦用户未经验证 他 她进行的任何付款都将失败 资金将自动返还给用户 由于欺诈问题 我是否可以添加或编辑任何代码以使其正常工作 好吧 我找到了这个 htt
  • 如何使用 Oracle 移动文本文件

    我有两个问题 1 如何从文件夹中移动文本文件 C Data inbox test txt 目标文件夹 C Data outbox test txt 2 如何获取文件夹中的目录文件列表 C Data inbox 谢谢 Oracle 提供了一个
  • WinRT 类库和 Windows Phone 8 之间的兼容性如何?

    我想要一个可以在 WinRT 和 Windows Phone 8 下运行的类库 我需要做什么 对 Cerebrate 的答案 1 可移植类库是正确的选择 然而 PCL 并不是一根魔杖 无法弥合 WP8 和 Win8 之间的许多不一致之处 对
  • Azure消息队列中的消息将直接进入Poison消息队列

    希望这可以节省某人一些时间 当移动到较新的版本时 下面的代码停止工作QueueClient https learn microsoft com en us dotnet api azure storage queues queueclien
  • 如何导出带有数据的 MySQL 架构?

    我有一个完整的架构 其中有许多表 其中包含 MySQL 查询浏览器中的数据 现在我想将这个包含所有表 数据的完整数据库发送给我的同事 我怎样才能将其发送给我的同事 以便他可以将这个完整的架构放入他的 MySQL 查询浏览器中 Thanks
  • SHACL 规则中的多路径和存在量化(我应该使用 sh:oneOrMorePath 吗?)

    我想了解如何处理 SHACL 规则中的多路径和存在量化 让我用一个示例本体来举例说明我的问题 本体包括 Approve Legal Result Man 和 Machine 类 所有类都是不相交的 它有两个属性 has theme 和 co
  • Django:使用条件 {% extends %} 使 {% block "div" %} 成为条件

    我想分享一个 AJAX 和常规 HTTP 调用之间的模板 唯一的区别是一个模板需要扩展 base html html 而另一个则不需要 我可以用 extends request is ajax yesno app base ajax htm
  • 使用 matplotlib 滑块小部件更改图像中的 clim

    我几乎没有使用 python 的经验 但我正在尝试创建一个简单的脚本 该脚本加载图像并使用滑块小部件来调整颜色条的最小值和最大值 并相应地重新绘制图像数据 我正在尝试遵循这个例子 http matplotlib sourceforge ne
  • LNK2028 托管 C++ DLL 在另一个托管 C++ DLL 中调用函数

    我正在将 VS2010 与托管 C DLL 一起使用 调用另一个托管 C DLL 中的函数 并且我得到了很多LNK2028 http msdn microsoft com en us library ms235590 28v vs 80 2