【问题标题】:static library works in console but not in GUI app - strange静态库在控制台中有效,但在 GUI 应用程序中无效 - 奇怪
【发布时间】:2010-10-06 21:43:14
【问题描述】:

我有一个奇怪的错误困扰了我一整天。我有一个已编译的库函数。我静态链接库以在单独的控制台应用程序中对其进行测试,并且一切都可以构建并正常工作。目前它只是一个简单的 sqrt 函数,称为 sqrtval。但是,当我将这个库包含在一个更大的图形项目中时,我会得到链接器错误。我在控制台应用程序(有效)和图形主应用程序(无效)中设置了相同的附加库目录和附加依赖项设置。错误如下。

1

Microsoft (R) Windows (R) 资源编译器版本 6.1.6723.1 1>版权所有 (C) 微软公司。 版权所有。 1>链接... 1>MainAppWindow.obj:错误 LNK2019: 未解析的外部符号“双 __cdecl sqrtval(double)" (?sqrtval@@YANN@Z) 引用于 功能“公共:虚拟虚空 __thiscall MainComponent::sliderValueChanged(class juce::滑块 *)" (?sliderValueChanged@MainComponent@@UAEXPAVSlider@juce@@@Z) 1>....\bin\Debug\tutorial.exe:致命 错误 LNK1120:1 个未解决的外部问题

【问题讨论】:

  • 您的控制台应用程序是用 C 还是 C++ 编写的?从链接器错误中,我可以看出您的 GUI 应用程序是 C++。如果您的控制台应用程序是用 C 编写的,那么 Frédéric Hamidi 很可能会得到以下答案。
  • 用 C++ 和 lib 编写的 GUI 应用程序

标签: c++ visual-studio linker-errors


【解决方案1】:

如果您的库是用纯 C 编写的,则必须将 sqrtval 声明为:

extern "C" double sqrtval(double);

【讨论】:

    【解决方案2】:

    链接器命令行是什么样的?您的库是否列在 GUI 应用程序的链接器命令中?

    【讨论】:

    • 在您留下此评论之前,我从未注意到链接器命令行。谢谢。
    猜你喜欢
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多