草庐IT

c++ - 如何在不强制最终用户链接这些库的情况下在静态库中使用共享库?

假设我正在开发一个静态库foo.a,它使用了bar.so中的一个函数。我如何构建这个库,使得在他们的项目中使用foo.a的任何人都不必显式链接到bar.so? 最佳答案 您可以在libfoo.a中调用dlopen来动态链接libbar.so。然后,使用dlsym找到您要使用的函数。typedefvoid(*BarFunctionType)(constchar*);FunctionTypebarFunction;voidinitialize_foo_lib(){void*h=dlopen("libbar.so",RTLD_LAZY);

c++ - 如何将库添加到xcode

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。这个问题已经被问过很多次了,但我总是发现他们很难理解。它很简单。您如何将库和/或框架添加到xcode和/或您的xcode项目。我需要从下载库到在代码中输入#include之间的所有步骤。但我还需要每个步骤背后的一些背景信息,否则它不会留在我的脑海中,我将在一周内回到这里。请记住,我对xcode开发环境的了解有限。提前致谢。

c++ - 如何在 Visual Studio 2012 C++ 项目中引用(动态库)DLL?

我制作了一个带有编译头文件的动态库并编译了一个DLL(使用VisualStudio2012)。我还有一个用VisualStudio2012制作的C++项目,我想引用之前生成的DLL。如何在我的VisualStudio2012C++项目中引用该(动态库)DLL?如果要使用库的功能,是否还需要指向头文件(.h)? 最佳答案 我发现使用项目属性对话框中的FrameworkandReferences项来引用DLL项目最简单:看起来您正在将一些奇怪的.Net东西添加到您的C++native代码中,但这也是native代码项目引用另一个项目的最

c++ - 混合共享/静态库时静态成员的多个拷贝

情况:我有:classPlatform{public:Platform(){count++;cout创建为静态库。考虑做一个动态库扩展class__declspec(dllimport/dllexport)DerivedPlatform:publicPlatform{}是的,我知道我是从非dll接口(interface)类派生的。每:Arestaticfieldsinherited?,应该只有一个计数实例。这是棘手的部分,实际上我最终得到了count的两个不同拷贝(即使count被声明为静态的)。即,在加载dll并调用registerPlatforms()后,它会增加一个不同的计数对象

C++ 单元测试和 stub 第 3 方 C 库

我需要对我编写的一些使用第3方C库的C++对象进行单元测试。由于超出该问题范围的原因,我无法直接调用第3方C库,需要将其stub以用于测试套件。对于单元测试套件的其他部分,我们使用googlemock,但我认为它不能用于C库。我可以手动stub库,但不想这样做(部分原因是懒惰(它相当大),但主要是因为它只是一个原则问题)。所以这是我的问题:是否有一种工具可以根据C库头文件生成stub代码?一旦我有了被删除的代码,我将对其进行一些小的修改,然后我将针对它进行链接以进行单元测试。 最佳答案 stubgen可以从头文件生成stub成员,除

C++ 库 "internal use only"编码风格

我正在用C++编写一个库。所有类和全局函数都在mylibrary命名空间内声明。我需要创建一些仅供内部使用的类:使用这个库的人应该立即注意到哪些类不打算在库外使用。不幸的是,我不能使用私有(private)函数,因为这会弄乱所有封装。我不能使用私有(private)类,因为内部类必须由同一个库中的“普通”类访问。我想这样做的一个好方法是创建命名空间mylibrary::internal并将所有“私有(private)”内容放入其中。这是正确的方法吗?还有其他常见的方法吗? 最佳答案 为您的内部功能使用匿名命名空间。这将确保没有外部代

c++ - Cmake 外部库.a

我这里有一个外部库:${PROJECT_SOURCE_DIR}/thirdparty/yaml-cpp/它是由Makefile制作的:thirdparty/Makefile。我正在像这样执行该makefile:add_custom_target(yaml-cppCOMMANDmakeWORKING_DIRECTORY${CMAKE_SOURCE_DIR}/thirdparty)然后我尝试链接构​​建到thirdparty/yaml-cpp/build/libyaml-cpp.a的库。这是不起作用的部分:target_link_libraries(load_balancer_node${

c++ - 使用 fread() 以相反的顺序读取文件会导致内存泄漏?

我有一个基本上是这样做的程序:打开一些二进制文件向后读取文件(向后,我的意思是它从EOF附近开始,并在文件开头结束读取,即“从右到左”读取文件),使用4MBblock关闭文件我的问题是:为什么内存消耗看起来像下面这样,即使我附加的代码中没有明显的内存泄漏?这是为获取上图而运行的程序源代码:#include#includeintmain(void){//allocatestuffconstintbufferSize=4*1024*1024;FILE*fileHandle=fopen("./input.txt","rb");if(!fileHandle){fprintf(stderr,"N

c++ - c_include_path 与 ld_library_path

在Ubuntu12.04或Springdale6.4上,使用gcc和g++,C_INCLUDE_PATH(或CPLUS_INCLUDE_PATH)和LD_LIBRARY_PATH之间有什么区别?LD一个只在运行时使用,另外两个只在编译时使用吗?由于GCC在这些操作系统上似乎忽略了INCLUDE和LIBRARY_PATH环境变量,因此我应该在构建~/.bashrc文件时设置它尽可能跨现代Linux操作系统可移植(实际路径中的模数变化)? 最佳答案 LD_LIBRARY_PATH是一个环境变量,当您启动可执行文件时,它告诉dll加载程序

c++ - 未找到 Boost 库,但编译正常

我正在尝试在C++中使用来自boost的文件系统使用的时候好像编译没问题"c++-cAnalyse.c-oAnalyse.o-g-W-Wall-L/usr/local/lib-lboost_filesystem-lboost_system"但是在尝试执行我的代码时出现以下错误:"errorwhileloadingsharedlibraries:libboost_filesystem.so.1.54.0:cannotopensharedobjectfile:Nosuchfileordirectory",afind/-iname"libboost_system.so.1.54.0我在安装b