搜索声明方法的 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 函数所在的头文件和库,所有体面的库也是如此。
我可以在发布的错误中看到 LvModule
和 CCamera
参考。我假设它们来自图书馆并且您知道它们来自哪个图书馆。然后,您应该确定这些引用属于什么产品,并查看它在您机器上的安装位置和方式,以及这些功能是如何记录的。
当然,您也可以搜索磁盘上的每个 lib 和 dll 文件,并使用 dumpbin
来识别它们声明的符号,但我个人更喜欢第一种方式。
我必须在我的项目中使用相机制造商提供的库。我正在使用 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 函数所在的头文件和库,所有体面的库也是如此。
我可以在发布的错误中看到 LvModule
和 CCamera
参考。我假设它们来自图书馆并且您知道它们来自哪个图书馆。然后,您应该确定这些引用属于什么产品,并查看它在您机器上的安装位置和方式,以及这些功能是如何记录的。
当然,您也可以搜索磁盘上的每个 lib 和 dll 文件,并使用 dumpbin
来识别它们声明的符号,但我个人更喜欢第一种方式。