搜索声明方法的 Library/Header 文件

Search for the Library/Header file where a method is declared

我必须在我的项目中使用相机制造商提供的库。我正在使用 Visual Studio 2015。写完#include后VS 2015建议的头文件我都合并了。

我已经在VS 2015中指定了包含文件和库的路径,它能够找到大部分方法。

问题: 当我编译代码时,出现以下链接器错误:

Error LNK2019 unresolved external symbol "public: unsigned int __cdecl LvModule::GetInt32(unsigned int,int *)" (?GetInt32@LvModule@@QEAAIIPEAH@Z) referenced in function "public: void __cdecl CCamera::CloseCamera(void)" (?CloseCamera@CCamera@@QEAAXXZ) ImageProcessingSidd C:Path\ImageProcessing.obj 1

问题:如何在我的系统中搜索头文件file/Library,其中定义了方法GetInt32()。在使用 kgrab 之类的命令搜索头文件之前,我已经看到有人(不确定确切的命令)

要搜索库,您首先要打开 "Visual Studio Command Prompt"(查看 Visual Studio 安装位置附近的开始菜单)

作为初始演示,运行 仅对一个库执行命令以查看结果:

dumpbin mfc120.lib /exports

(必须 运行 来自实际保存该库的目录)

然后运行程序dumpbin像这样:

dumpbin *.lib /exports | findstr "LvModule::GetInt32"

运行 在丢失的库 可能 找到的任何目录中的命令。

这将在当前目录的库中搜索所有导出的函数,并找到对 LvModule::GetInt32.

的任何引用

你必须从那里继续你的研究,看看它是否正是你需要的缺失功能,但它是一个很好的起点。


TL;DR: dumpbin 适合在库中查找。


为什么我要给你写脚本?
你会编程吗?

程序:SearchFor.bat%1

@echo off
@for /F "delims=;" %%a in ('dir \*.lib /B /S') do call :SearchText "%%a" %1
exit /B

:SearchText
dumpbin %1 /exports | findstr %2 > NUL
if NOT ERRORLEVEL 1 echo MATCH IN %1
exit /B

运行 为:

C:\>SearchFor LvModule::GetInt32

嗯,我的建议是 RTFM

更严重的是,MSDN 文档总是提供 API 函数所在的头文件和库,所有体面的库也是如此。

我可以在发布的错误中看到 LvModuleCCamera 参考。我假设它们来自图书馆并且您知道它们来自哪个图书馆。然后,您应该确定这些引用属于什么产品,并查看它在您机器上的安装位置和方式,以及这些功能是如何记录的。

当然,您也可以搜索磁盘上的每个 lib 和 dll 文件,并使用 dumpbin 来识别它们声明的符号,但我个人更喜欢第一种方式。