草庐IT

weak_library

全部标签

c++ - 为什么 g++ 在 LIBRARY_PATH/../lib64 中查找,这在哪里记录?

我的LIBRARY_PATH环境变量中有一个自定义目录:/cs/public/lib/pkg/opencv/lib。但是,当我使用g++--print-search-dirs时,我得到了这个:libraries:=/cs/public/lib/pkg/opencv/lib/x86_64-suse-linux/4.6/:/cs/public/lib/pkg/opencv/lib/../lib64/:/usr/lib64/gcc/x86_64-suse-linux/4.6/:/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-su

c++ - g++ : In what order should static and dynamic libraries be linked?

假设我们有一个名为“my_app”的主可执行文件,它使用了其他几个库:3个库是静态链接的,另外3个是动态链接的。它们应该按什么顺序与“my_app”相关联?但是这些应该按什么顺序链接呢?假设我们得到了依赖于libSB的libSA(如在静态A中)和依赖于libSB的libSC:libSA->libSB->libSC以及三个动态库:libDA->libDB->libDC(libDA为基础,libDC为最高)这些应该按什么顺序链接?基本的第一个还是最后一个?g++...-glibSAlibSBlibSC-lDA-lDB-lDC-omy_app似乎是正确的顺序,但是是这样吗?如果任何动态库与静

c++ - 原始指针和weak_ptr有什么区别?

如标题。这个问题可能已经有了答案,但我没有找到答案。 最佳答案 裸指针和weak_ptr之间的基本概念区别在于,如果指向的对象被销毁,裸指针不会告诉你。这称为悬空指针:指向不存在的对象的指针。它们通常很难追踪。weak_ptr会。为了使用weak_ptr,您必须首先将其转换为shared_ptr。如果那个shared_ptr没有指向任何东西,那么这个对象就被删除了。例如:#include#includestd::weak_ptrwp;voidtest(){autospt=wp.lock();//Hastobecopiedintoas

c++ - 标准::原子 | compare_exchange_weak 与 compare_exchange_strong

我不确定是我不理解还是文档没有明确表述。以下摘自最新草案(N3126,第29.6节):boolatomic_compare_exchange_weak(volatileA*object,C*expected,Cdesired);boolatomic_compare_exchange_weak(A*object,C*expected,Cdesired);boolatomic_compare_exchange_strong(volatileA*object,C*expected,Cdesired);boolatomic_compare_exchange_strong(A*object,C*

c++ - 启用 openmp 时出错 - "ld: library not found for -lgomp"和 Clang 错误

我正在尝试让openmp在Mavericks上的程序中运行,但是当我尝试使用标志-fopenmp进行编译时,我收到以下错误:ld:librarynotfoundfor-lgompclang:error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)我正在运行的命令是:gccmyProgram.cpp-fopenmp-omyProgram另外,当我运行gcc时,我会收到Clang警告,我觉得这很奇怪。并且查看/usr/bin/gcc它似乎没有链接到Clang。关于如何修复我的Clang错误并让openmp编译的任何建议?

c++ - 为什么 std::weak_ptr::expired 被优化掉了?

在下面的代码中,while(!Ref.expired());被愉快地优化为无限循环。如果代码行改为while(!Ref.lock());。一切都按预期工作。所以真的有两个问题:1)当std::weak_ptr::expired()访问内存隔离计数器时,编译器如何优化过期?2)Ref.lock()真的安全吗,或者这也可以优化掉?下面的示例代码。#include#include#include#includeclassA{public:A(){m_SomePtr=std::make_shared(false);}virtual~A(){std::weak_ptrRef=m_SomePtr;

C++ : Difference between linking library and adding include directories

很多标题都概括了。如果我想使用库,我不确定两者之间的区别。谢谢! 最佳答案 一般来说,两者都需要。包含文件包含类型的声明、函数的原型(prototype)、inline函数、#defines、...,通常是所有信息关于编译器在编译文件时需要注意的库。相反,静态库包含库函数的实际目标代码。如果header包含原型(prototype),则静态库包含(编译的)函数的定义,即链接器将与您的链接器链接的对象模块。如果你只包含头文件而不链接静态库,链接器会提示缺少定义,因为你会在头文件中使用declared函数,而不是defined任何地方(

c++ - VS 2015编译cocos2d-x 3.3报错 "fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration"

当我使用visualstudio2015编译cocos2d-x(3.3版)时,出现错误,说:fatalerrorC1189:#error:MacrodefinitionofsnprintfconflictswithStandardLibraryfunctiondeclaration(编译源文件..\base\s3tc.cpp)源码为:#ifdefsnprintf#errorMacrodefinitionofsnprintfconflictswithStandardLibraryfunctiondeclaration#endif谁能告诉我怎么了? 最佳答案

c++ - 为什么不能从 unique_ptr 构造weak_ptr?

如果我理解正确,weak_ptr不会增加托管对象的引用计数,因此它不代表所有权。它只是让您访问一个对象,该对象的生命周期由其他人管理。所以我真的不明白为什么不能从unique_ptr构造weak_ptr,而只能从shared_ptr构造。有人能简单解释一下吗? 最佳答案 如果您考虑一下,weak_ptr必须引用对象本身以外的其他内容。这是因为对象可以不复存在(当没有更多的强指针指向它时)并且weak_ptr仍然必须引用包含对象不再存在的信息的东西。使用shared_ptr,该东西就是包含引用计数的东西。但是对于unique_ptr,

c++ - cmake - find_library - 自定义库位置

我目前正在尝试让CMake为我的项目运行(在Windows上)。我想使用安装所有库的自定义位置。为了让CMake知道这条路径,我尝试这样做:set(CMAKE_PREFIX_PATHD:/develop/cmake/libs)但是当我试图找到图书馆时find_library(CURL_LIBRARYNAMEScurlcurlliblibcurl_impcurllib_static)CMake找不到它。当我将前缀路径设置为set(CMAKE_PREFIX_PATHD:/develop/cmake/libs/curl)...图书馆位于。所以我的问题是:如何正确配置CMake以在自定义位置使