【问题标题】:facing error LNK error [duplicate]面临错误LNK错​​误[重复]
【发布时间】:2016-01-09 03:38:39
【问题描述】:

我想拥有这个,或者我应该说我想在 Form1(void) 中触发或调用 Wfs_StartUpWfs_OpenWfs_Execute 等函数,但我遇到了这些错误:

错误 LNK2028:未解析的令牌 (0A000371) “int _cdecl mytestapp::Wfs_Execute(unsigned short)” (?Wfs_Execute@mytestapp@@$$FYAHG@Z) 在函数“public: _clrcall mytestapp::Form1::Form1”中引用(void)" (??0Form1 @mytestapp@@$$FQ$AAM@XZ)

这个错误被报告了两次,但在第二个错误中是

错误 LNK2019:函数“public: _clrcall mytestapp::Form1::Form1(void )" (??0Form1@mytestapp@@$$FQ$AAM@XZ)

还有第三个错误:

错误 LNK1120:2 个未解决的外部问题。

【问题讨论】:

  • Microsoft Visual Studio C++ 2010
  • 对于托管 C++,“未解析的令牌”类似于原生 C++ 中的“未解析的引用”,即链接器无法找到符号(函数、变量等)的定义,因为您的代码中没有这些定义或由于缺少库依赖项
  • 我已尝试将路径添加到 .lib 文件,但仍然如此。我不明白究竟是 Wfs_Execute() 还是它现在被定义为“无符号短”的参数是没有链接的。究竟是什么问题。我什至已经阅读了提供的链接上的那些答案尝试了一些但仍然没有运气。我什至认为我可能调用了错误的函数“Wfs_Execute”,甚至将其更改为“WFSExecute”,但仍然是同样的错误。
  • 刚刚弄清楚是哪一行出现了这个错误。在 Form1(void) 这就是我所做的: HSERVICE hservice=0; BOOl fSuccess=EXIT_SUCCESS; if(Wfs_StartUp()) { if(Wfs_Open(&hService)) { if(Wfs_Lock(hService)) { Wfs_Execute(hService); // 这是产生此错误的行,就像我注释掉应用程序执行的这一行一样。这就是这个错误的来源。那么这里可能有什么问题呢?是 Wfs_Execute 函数还是它可能是参数?
  • @world 添加了对这些函数所在的程序集的引用?如果是,这些函数是否公开?

标签: .net c++-cli mixed-mode cen-xfs


【解决方案1】:

错误指向函数 mytestapp::Wfs_Execute。我会检查:

  1. 此函数是否不是内联的,而是从另一个翻译单元调用的
  2. 此函数的签名在声明和定义之间是否匹配
  3. 实现该功能的源文件是否是构建的一部分

【讨论】:

    猜你喜欢
    • 2014-05-13
    • 2018-06-17
    • 2016-12-07
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多