草庐IT

libta_lib

全部标签

c++ - .LIB 和 .OBJ 文件有什么区别? (Visual Studio C++)

我知道.OBJ是编译一个编译单元的结果,.LIB是一个静态库,可以从几个.OBJ创建,但这种区别似乎只在编译单元的数量上。还有其他区别吗?是相同还是不同的文件格式?当我想知道在两个(或更多).LIB中定义的相同静态变量是否在链接到最终可执行文件期间被合并时,我遇到了这个问题。对于.OBJ,变量被合并。但在.LIB中是否也一样? 最佳答案 .LIB文件是与索引连接在一起的.OBJ文件的集合。链接器的处理方式也应该没有区别。 关于c++-.LIB和.OBJ文件有什么区别?(VisualStu

C++:#pragma comment(lib, "XXX") 实际上对 "XXX"做了什么?

我的背景是C#,但我必须维护一些遗留(MS)C++。在那个代码库中我偶然发现:#pragmacomment(lib,"OtherLib700.lib")其中700是一些版本控制。另外lib是一个同名的DLL。我最初认为该程序将依赖于DLL,但在将其从系统中删除后,该程序仍然可以工作。不过,还有一个更新版本的DLL,名为OtherLib900...似乎程序“包含”了lib的代码,因此它不再依赖于外部DLL。(或者程序“自动”使用较新的DLL...)哪一个是正确的?有没有办法进一步证实“假设”? 最佳答案 那个pragma用于链接到指定

c++ - 尽管在 zlib.lib 中链接,但 Unresolved external 问题

我一直在尝试编译一个在VC++2010中使用zlib压缩的应用程序。我得到错误:errorLNK2019:unresolvedexternalsymbolinflateInit2referencedinfunction...如果我不链接库,这不会是不寻常的。我链接了静态发布的zlib库。我已经设法让这个完全相同的库和头文件配置在不同的解决方案中完美运行,因此这种行为非常出乎意料。任何想法都会受到赞赏。链接器命令行:/OUT:"C:\DocumentsandSettings\Suthke\MyDocuments\VisualStudio2010\Projects\SBRapGen2\De

c++ - 错误 LNK2005 : new and delete already defined in LIBCMTD. lib(new.obj)

我有一个包含两个项目的VisualStudio2005解决方案。一个是静态库,另一个是用于测试静态库中功能的可执行文件。静态库使用MFC。构建解决方案时出现以下错误。uafxcwd.lib(afxmem.obj):errorLNK2005:"void*__cdecloperatornew(unsignedint)"(??2@YAPAXI@Z)alreadydefinedinLIBCMTD.lib(new.obj)uafxcwd.lib(afxmem.obj):errorLNK2005:"void__cdecloperatordelete(void*)"(??3@YAXPAX@Z)alr

c++ - 知道 .lib 是静态的还是导入的

我有从C代码编译的.lib文件。我怎么知道在运行时是否需要这个独立的静态库或只需要一个导入库和DLL?我缺少一些dumpbin选项吗? 最佳答案 使用lib命令。如果它是静态的,lib会在里面显示一堆.obj文件。如果它是隐含的,则不是这样。lib/listfoo.lib会做的。另见:https://learn.microsoft.com/en-us/cpp/build/reference/managing-a-library 关于c++-知道.lib是静态的还是导入的,我们在Stack

gcc - 在 Cygwin64 : "ld: cannot find -lmingw32" 上编译 cgo lib

我正在尝试在Windows上使用cgo库,即github.com/mattn/go-sqlite3我使用Cygwin64并安装了所有“开发”包,所以gcc可用。但运行gogetgithub.com/mattn/go-sqlite3会导致:/usr/lib/gcc/x86_64-pc-cygwin/5.3.0/../../../../x86_64-pc-cygwin/bin/ld:cannotfind-lmingwex/usr/lib/gcc/x86_64-pc-cygwin/5.3.0/../../../../x86_64-pc-cygwin/bin/ld:cannotfind-lmi

命令行查看内容 Shared Object Module(lib*.so)

查看共享对象模块(lib*.so)内容的命令行是什么?就像我们的使用方式:ar-tlib*.a用于文件(lib*.a),它显示库中的所有目标文件。EDIT1示例ar-tlib*.a给我一​​个展示:asset.osldep.o 最佳答案 使用nm-D--defined-onlylibname.so从动态库中获取符号名称。--defined-only开关只显示在这些文件中定义的符号,而不是对外部函数的引用。另一种方法是使用objdump,只捕获文本部分中的符号:objdump-T/usr/lib/libjpeg.so|greptext

linux - 是否在/usr/local/lib 中搜索共享库?

/usr/local/lib是否已搜索共享库?我有这个错误:[Leo@chessman~]$whereisffmpegffmpeg:/usr/local/bin/ffmpeg[Leo@chessman~]$ffmpegffmpeg:errorwhileloadingsharedlibraries:libavcore.so.0:cannotopensharedobjectfile:Nosuchfileordirectory[Leo@chessman~]$ls/usr/local/lib/libav*/usr/local/lib/libavcodec.a/usr/local/lib/lib

c++ -/usr/lib/x86_64-linux-gnu/libstdc++.so.6 : version CXXABI_1. 3.8' 未找到

事实证明,“makeinstall”-安装并暗示目标“install-target-libstdc++v3”的make目标实际上并不意味着您已准备好开始。我一直想知道我做错了什么,因为我认为这样的make目标会为我做到这一点。 最佳答案 将库的路径添加到LD_LIBRARY_PATH环境变量TL;DRGCC要求您在找不到正确版本时手动告诉它您的库的位置,这可以通过几种方式完成。一种是将其添加到LD_LIBRARY_PATH。exportLD_LIBRARY_PATH="/usr/local/lib64/:$LD_LIBRARY_PA

java - 访问限制 : Is not accessible due to restriction on required library . .\jre\lib\rt.jar

我正在尝试修改一些旧代码,但出现以下错误:访问限制:由于所需库..\jre\lib\rt.jar的限制,无法访问类型Headers中的方法create(JAXBRIContext,Object)对于这些导入语句:importcom.sun.xml.internal.bind.api.JAXBRIContext;importcom.sun.xml.internal.ws.api.message.Header;importcom.sun.xml.internal.ws.api.message.Headers;importcom.sun.xml.internal.ws.developer.W