Tag: 静态库

c ++未定义的引用与静态库

我试图从一个类,但尝试使用它,我总是得到错误与任何未定义的引用静态库。 我进行的方式是创build对象文件 g++ -c myClass.cpp -o myClass.o 然后包装 ar rcs myClass.lib myClass.o 总之,我明显缺less一些东西。 我敢打赌,这是符号的东西。 感谢您的任何build议,我知道这是最有可能的东西,我可以找出如果阅读一些教程,如果再次困扰愚蠢的东西,抱歉:) 编辑: myClass.h: class myClass{ public: myClass(); void function(); }; myClass.cpp: #include "myClass.h" myClass::myClass(){} void myClass::function(){} 程序使用的类: #include "myClass.h" int main(){ myClass mc; mc.function(); return 0; } 最后我编译它是这样的: g++ -o main.exe -L. -l myClass main.cpp 错误只是经典的: C:\Users\RULERO~1\AppData\Local\Temp/ccwM3vLy.o:main.cpp:(.text+0x31): undefined reference to `myClass::myClass()' […]

我如何告诉CMake链接到源目录中的静态库中?

我有一个Makefile的小项目,我试图转换到CMake,主要是为了获得与CMake的经验。 对于这个例子来说,这个项目包含了一个源文件(C ++,虽然我不认为这个语言是特别相关的),还有一个我从其他地方复制过来的静态库文件。 假设参数的缘故,库的源代码不可用; 我只有.a文件和相应的标题。 我手工制作的Makefile包含这个构build规则: main: main.o libbingitup.a g++ -o main main.o libbingitup.a 这工作正常。 我如何告诉CMake重现这个? 不是字面意思,这个确切的makefile,当然,但包括一个等效的链接命令。 我尝试了一些显而易见的方式,比如说 add_executable(main main.cpp libbingitup.a) 要么 add_executable(main main.cpp) target_link_libraries(main libbingitup.a) 以及各种与link_directories(.)或add_library(bingitup STATIC IMPORTED)等东西,但迄今没有任何事情,导致成功的联系。 我该怎么做? 版本细节:Linux上的CMake 2.8.7(Kubuntu 12.04)和GCC 4.6.3

确定Windows上的静态库(LIB)的CPU体系结构

我刚刚在使用VS2008的64位Windows机器上构build了libpng。 它会在\ projects \ visualc71 \ Win32_Lib_Release目录(用作“LIB Release”的configuration)中生成一个libpng.lib文件。 我用dumpbin来检查这个LIB文件: C:\Temp\libpng-1.4.3>dumpbin projects\visualc71\Win32_LIB_Release\libpng.lib Microsoft (R) COFF/PE Dumper Version 9.00.30729.01 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file projects\visualc71\Win32_LIB_Release\libpng.lib File Type: LIBRARY Summary 8E4 .debug$S DF2 .drectve 2BCD .rdata 21165 .text C:\Temp\libpng-1.4.3> 它并不显示LIB文件的体系结构。 如何查找给定的LIB文件是为32位还是64位体系结构构build的?

“重新安置R_X86_64_32S”链接错误

我试图将静态库链接到共享库,我得到以下错误 / usr / bin / ld:../../../libraries/log4cplus/liblog4cplus.a(fileappender.o):重新定位R_X86_64_32S在创build共享对象时不能使用“本地符号”; 用-fPIC重新编译 ../../../libraries/log4cplus/liblog4cplus.a:无法读取符号:错误值 collect2:ld返回1退出状态 但是这在32位机器上工作没有任何这样的错误。 我尝试手动添加-fPIC标志到Makefile也没有解决问题 我尝试了这里build议的-whole-archive标志,但没有成功。 / usr / bin / ld:../../../libraries/log4cplus/liblog4cplus.a(appenderattachableimpl.o):重新定位R_X86_64_32S针对vtable for log4cplus :: spi :: AppenderAttachable不能用于制作共享对象; 用-fPIC重新编译 ../../../libraries/log4cplus/liblog4cplus.a(appenderattachableimpl.o):无法读取符号:错误的值 collect2:ld返回1退出状态 创buildliblog4cplus.a: unzip log4cplus-1.1.0.zip ./configure –enable-static=yes –enable-threads=yes vi Makefile并将-fPIC添加到CXXFLAGS和CFLAGS make 然后编译我的共享库: g++ -frtti -w -c -fPIC -I"Include_Directory" myfile.cpp g++ -shared -fPIC -frtti -I"Include_Directory" -o mysofile.so myfile.o -Wl,–whole-archive "../../../libraries/log4cplus/liblog4cplus.a" […]

Xcode自定义构buildconfiguration导致静态库的“库/文件未find”

我有一个工程与一个项目链接在另一个项目(这也是在工作区中)的静态库。 这是Kobold2D中的一个问题,即使我理解了原因,我仍然无法解决,我想这与这个问题很相似 。 项目目标和静态库目标都具有debugging和发布版本configuration。 一切都很好。 现在有人在项目中添加了新的构buildconfiguration,并将其命名为Ad-Hoc 。 现在项目的目标是build立Ad-Hocconfiguration,但是静态库没有这样的configuration。 显然他们默认构buildReleaseconfiguration。 最后,当链接器应该把所有东西放在一起时,它就会失败: ld: library not found for -lbox2d-ios Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang++ failed with exit code 1 对于强制加载的库通过-force_load $(BUILT_PRODUCTS_DIR)/libSomeLib.a错误是类似的,但说“找不到文件”。 我应该注意到库“libbox2d-ios.a”在“链接二进制库”构build阶段列表中。 很明显,问题在于链接器假定这些库在BUILT_PRODUCTS_DIR的Ad-Hoc-iphoneos文件夹中,而它们实际上在Release-iphoneos文件夹中,因为它们没有Ad-Hoc构buildconfiguration。 我怎样才能把连接器打在脸上,告诉他把图书馆放在哪里? 最好我正在寻找一个适用于这两种情况的解决scheme,即库添加了标准方式(链接二进制与库构build阶段)和需要额外的-force_load工作的库。 我希望有一些方法可以: 强制库被放置在应用程序目标的构buildconfiguration文件夹中 运行后编译和预链接脚本,将每个库复制到构buildconfiguration文件夹 指定库的相对path 对于-force_load,使用$ BUILT_PRODUCTS_DIR以外的其他macros 像-WTFmake-all-problems-go-away这样的链接器标志 对不起,我不得不说这个… 唉! 🙂

错误:“文件是不是被链接的体系结构的存档(armv7s)”

我已经build立了自己的静态C ++库,它是用这些设置构build的: 体系结构:armv7,armv7s 仅构build主动架构:否 支持平台:iOS 有效的体系结构:armv7,armv7s 库项目构build得很好,我得到了.a文件(我已经清理了构build文件夹,并重新构build了项目,以确保我的设置是有效的)。 我已经添加了库(.a文件)到我的iOS项目,但项目不会build立,即使我已经在iOS项目上设置完全相同的设置: 体系结构:armv7s,armv7 仅构build主动架构:是的 支持平台:iOS 有效的体系结构:armv7,armv7s 我不断收到这个错误: ld:warning:忽略文件 /Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a,该文件是为存档构build的,而不是被链接的体系结构(armv7s) :/用户/隐藏/资料库/开发人员/ Xcode / 我错过了什么? 它告诉我.a文件不是为armv7s构build的,但是这正是我build立这个库的设置。

如何构build一个Objective-C静态库?

我有一些Objective-C类,我目前在Cocoa应用程序(Mac OS X)和Cocoa-Touch应用程序(iOS)中使用。 目前,当我更新这些类时,我必须将这些更新的.h和.m文件复制到两个项目中。 不是那么重要,但是我会在更多的项目中使用它们。 所以,我想将这些类构build到一个Objective-C静态库中。 然后在所有其他项目中链接到该库。 有没有办法build立一个静态库,使它可以同时适用于Cocoa和cocoa-touch应用程序? 我试着用这些类build立一个Cocoa静态库,但是当我尝试在我的Cocoa应用程序中连接到这个库时,我得到了各种错误,而且我确定它们来自于我没有这样做的事实对。 那么,如何以正确的方式构buildObjective-C静态库? 我是否必须构build一个Cocoa-Touch和Cocoa静态库? 或者我可以做一个? 这是怎么做的? 有没有关于这个主题的完整教程? 我已经search了网页,似乎找不到关于这个主题的综合教程,所以我在这里提出了这个问题,希望能够发布一个好的答案,这个问题可以作为我和未来提问者的资源。

Xcode 4中的静态库

(我的问题已经在这里问过,但没有任何可以看到的工作答案,例如Xcode4工作区和静态库项目和应用程序项目 ) 我正在尝试使用第三方提供的库。 他们提供了构buildlibLibraryName.a文件的XCode项目。 他们build议将项目添加为我自己的子项目,然后将产品libLibraryName.a文件添加到我的项目设置“链接二进制库”中描述的库集。 库的构build正确:生成.a文件。 但是项目在Products组下面显示一个红色的libLibraryName.a文件。 我不能让它变黑。 父项目说它不能find用于链接的库名。 作为一个testing,我使用XCode 4静态库模板创build了一个新的静态库项目。 这个项目performance出同样的行为 – 即使构build.a文件,产品也不会显示“黑色”。 ( 编辑:如果你为设备而不是模拟器,它会变黑。 我知道XCode 4默认将中间文件和产品文件放在共享位置。 我试过这个设置,并且改变了设置,把产品文件放在构build设置中描述的文件夹中。 两个设置都不起作用。 人们也build议build立一个设备而不是模拟器。 我试过这个无济于事。 是什么赋予了? 我如何获得静态库项目来识别产品的构build位置,然后在另一个项目中引用此产品?

.exp有什么用处,.lib和.dll有什么区别

在编译和链接期间,.exp有什么用? .lib和.dll有什么区别? 我知道.lib将被使用,而链接和.dll将在运行该程序时使用。 但.lib和.dll究竟有什么区别呢? .lib文件是否不包含来自.dll文件的函数的代码? 有什么需要使用两个单独的文件? 请澄清。 提前致谢

Android Studio + Volley

我是Android Studio的新手,我想为我的应用使用Volley库,但是我无法将源作为Android Studio中的库添加。 我search了网页,但找不到任何东西。 据说到处都是作为图书馆import,但我不知道如何。 我从git仓库中得到了抽象源码: https://android.googlesource.com/platform/frameworks/volley 但我现在不知道如何把它作为一个库添加到我的项目中。 感谢您的帮助。