草庐IT

shared-libraries

全部标签

C++11 闭包 shared_ptr

创建由shared_ptr管理的堆分配闭包的语法是什么。我想将闭包传递给函数并能够传递nullptr。似乎使用了shared_ptr但我无法理解从lambda表达式初始化它的语法 最佳答案 应该是这样的autolambda=[](){/*dosomethingusefull*/};autop=std::make_shared>(lambda);但实际上你可能不需要shared_ptr,因为function可以从nullptr构造。std::functionfnc(nullptr); 关于

c++ - std::make_shared 与 throw dtor 和 libc++ 不编译

这是非常基本的代码:#includeclassfoo{public:~foo()noexcept(false){}};intmain(){autox=std::make_shared();return0;}编译如下:g++-std=c++11test.cpp当使用libc++编译时,它会失败:/usr/bin/../include/c++/v1/memory:3793:7:error:exceptionspecificationofoverridingfunctionismorelaxthanbaseversionclass__shared_ptr_emplace^/usr/bin/.

c++ - 链接具有不兼容依赖项的库

我正在开发一个需要两个第三方库(libfoo.so和libbar.so)的C++项目。我的操作系统是Linux。libfoo.so动态链接到libpng14.so.14(1.4.8)(EDIT1)libbar.so似乎静态链接到一个未知版本的libpnglibpng1.2.8(EDIT1)我说“似乎是”是因为:lddlibbar.so没有显示任何关于png的内容nm-Dlibbar.so|greppng_read_png说“004f41b0Tpng_read_png”lesslibbar.so|greppng_read_png说“4577:004f41b0738FUNCGLOBALDE

homebrew No remote ‘origin‘ in /opt/homebrew/Library/

homebrew安装命令:/bin/zsh-c"$(curl-fsSLhttps://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"本来是可以的,但是莫名其妙它就空文件夹了,就重新安装了一下,真的非常非常慢,大概要安了两个小时,结果brew install又报404,于是brew update又报错,可能是git的问题Noremote'origin'in/opt/homebrew/Library/Taps/homebrew/homebrew-services,skippingupdate。尝试解决: brew doctor,然后按照给的

CMake Error at /usr/local/share/cmake-3.24/Modules/FindCUDA.cmake:859 (message): Specify CUDA_TOOL

问题从错误日志中可以看到,问题出在CMake无法找到CUDA工具包的根目录。错误消息是:CMakeErrorat/usr/local/share/cmake-3.24/Modules/FindCUDA.cmake:859(message):SpecifyCUDA_TOOLKIT_ROOT_DIR这意味着CMake需要知道CUDA工具包的安装位置,以便正确配置和构建denseflow。解决方式1为了解决这个问题,你需要设置CUDA_TOOLKIT_ROOT_DIR环境变量,指向CUDA的安装目录。通常,CUDA安装在/usr/local/cuda目录,但这可能因系统而异。你可以通过以下命令设置C

Android NDK 找到动态链接 : unable to debug library

我有一个项目可以很好地在android设备上编译、加载和运行。当我调用gdb服务器时,它也能正常工作。然后,当我调用gdb客户端运行断点时,消息出现:Errorwhilemappingsharedlibrarysections:/system/bin/linker:Nosuchfileordirectory.libandroid.so:Nosuchfileordirectory.liblog.so:Nosuchfileordirectory.libEGL.so:Nosuchfileordirectory.libOpenSLES.so:Nosuchfileordirectory.libG

c++ - 从 unique_ptr<T[]> 初始化 shared_ptr<T>

[跟进this问题]最近我一直在处理指向C风格数组的智能指针。我最终完成了推荐的事情并改为使用指向vector的智能指针,但在那段时间里,我得到了一些建议:不要使用shared_ptr对象来管理最初使用make_unique创建的数组因为它不会调用delete[]而是delete.这对我来说似乎不合逻辑,我检查了两个Coliru和标准:这段代码:#include#includeintmain(){std::coutmyUnique(customArrayAllocator(4),customArrayDeleter);std::coutmyShared=std::move(myUniq

c++ - 推荐用于跨平台进程内动态库绑定(bind)的 C++ 包装器(即轻量级、高性能 COM 或 CORBA)

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion我们正在开发一个应用程序,该应用程序将具有插件“架构”,以允许该应用程序的消费者提供他们自己的专有算法。(我们基本上会有一套解析器,也允许第三方提供他们自己的解析器)领域空间需要非常高的性能,所以进程外绑定(bind)是行不通的,我们宁愿让CORBA和COM这样的重量级事物单独存在。基本上我们正在寻找一个简单的跨平台包装器:从相对路径加载库提供特定dll/.so到某些

c++ - Mingw 构建 - 依赖于不是 Windows 原生的 DLL

我正在使用MinGW(GCC4.5.0)编译我的库以导出为共享库。为此,我使用类似于以下的MAKE命令编译所有源文件:gcc-shared-cmysource.cpp-omysource.o然后最后:gcc-shared-lstdc++-lm-lws2_32mysource.o-omylib.dll当我对输出文件执行依赖项遍历时(例如使用http://www.dependencywalker.com/),我看到有3个依赖项:KERNEL32.dllMSVCRT.dllLIBSTDC++-6.DLL让我的DLL依赖于Windows不附带的文件对于我的最终目标来说不是最佳选择。有没有一种方

c++ - 在 C 接口(interface)中使用 shared_ptr?

我有一个要移植到C++的C库,它大量使用手动引用计数结构。我考虑过使用shared_ptr来自动处理引用计数,但我还想维护CAPI。旧签名看起来像这样:Object*object_create(void);Object*object_retain(Object*o);voidobject_release(Object*o);如果我使用shared_ptr,有什么方法可以有效地在CAPI中公开此手动引用计数? 最佳答案 shared_ptr的问题,正如您已经发现的那样,您不能修改引用计数,除非通过构造或销毁实例。所以不,除了为每个构造