【问题标题】:Unresolved external symbol when linking my library链接我的库时未解析的外部符号
【发布时间】:2012-07-29 00:53:15
【问题描述】:

我已经用 VS2010 编译了我自己的库文件(.lib),但是当我尝试像这样引用它时

#pragma comment(lib,"path/to/lib.lib")

我不断收到无法解析的外部符号...我做错了什么? #pragma comment(lib, "*.lib") 到目前为止适用于任何库,我也尝试在设置下链接它,但没有成功。

【问题讨论】:

  • 在您的 .lib 文件上使用 dumpbin。您可以从 Visual Studio 命令提示符运行它。检查您期望的符号在库中是否确实可见,然后报告!
  • to:cli_hlt 是的,我什至尝试使用 \\ 和 \,甚至输入了错误的路径(这给了我找不到文件)@Rook 我该如何使用它? (实际上是我创建的第一个 .lib)
  • @user1126068:要么启动 Visual Studio 命令提示符并从那里运行 dumpbin,要么搜索它(在我的机器上它位于 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\dumpbin.exe)。现在你可以运行dumpbin /ALL mylib.lib > symbols.txt 之类的东西,然后在文本编辑器中打开结果并进行搜索。
  • 为了运行dumpbin,我必须复制mspdb100.dll,然后我尝试再次运行编译器,现在我得到:程序数据库管理器不匹配;请检查您的安装

标签: c++ visual-studio-2010 static-libraries static-linking


【解决方案1】:
  1. 打开两个目录。
    • 第一个包含的库失败
    • 第二个包含带有编译器的二进制目录(对我来说它的 C:\Program Files\Microsoft Visual Studio 9.0\VC)
  2. 将 mspdb*.dll(从第一个目录)复制到包含库的目录
  3. 打开库目录下的cmd.exe
  4. 写入“%FIRST_DIRECTORY/bin/dumpbin.exe”/ALL library.lib > lib.txt (例如我写成“C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\dumpbin.exe”/ALL MyTestLibrary.lib > lib.txt
  5. 搜索您想要的方法(按类名或方法名)

如果你没有找到 - 开发者不要写它。或方法实现是内联的

如果是第二个 - 你应该告诉 IDE whereis source。 顺便说一句,在库编译项目中没有任何方法可以通过用户标头访问可以是内联的。您可以做的所有事情来优化速度 - fastcall。

【讨论】:

    【解决方案2】:

    1) 打开 VS 命令控制台(工具/Visual Studio 命令提示符)。

    2) 使用cd 命令切换到包含相关库的目录。

    3) 输入:

    dumpbin /all my_lib_name.lib > lib.txt
    

    my_lib_name.lib 替换为您的库的名称。 (对于大型库,您需要将输出写入文本文件 lib.txt

    4) 打开这个新创建的lib.txt 以查看库的内容。 更多详情请见here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 1970-01-01
      • 2021-04-30
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多