草庐IT

shared-libraries

全部标签

c++ - CMake Find_Package(PythonLibs): Does CMake give a preference to dynamic or static libraries?

当我运行FindPackage(PythonLibs)时,它首先找到静态python库python3.5m.a,而不是python3.5m.so。这是CMake的预期行为吗?我怀疑它不符合CMakebugreport;然而,这个错误报告是在2005年提交的。13年来情况发生了变化。如果共享库有偏好,那么知道为什么CMake会找到静态库而不是共享库吗?我已经通过使用SET()命令告诉CMake正确的库在哪里用于我自己的构建来解决构建问题。我正在寻找一个可以更好地理解CMake在这种情况下的行为的答案,因为我正在尝试解决不同的problem,并在共享库中找到static对我来说似乎很奇怪。

c++ - 处理数组时 make_unique 和 make_shared 之间的区别

从C++17开始,您可以使用make_unique为了创建指向数组的智能指针,例如:unique_ptrptr=make_unique(10);这将创建一个指向10个元素数组的智能指针(将调用适当的deleter[]的事实也很棒)。但是根据thismake_shared不支持此类功能(至少在C++17中不支持,据我所知):shared_ptrptr=make_shared(10);上面的代码显然是非法的。事实上,我的VisualStudio2017(v141)吐出以下错误:C2070:'int[]':illegalsizeofoperand'有趣的是shared_ptr本身确实支持数组

二、solidity 基础进阶(2.1)—— library 库合约《实战NFT web3 solidity(新版本0.8.+)》

《web3solidity0.8.+版本(持续更新新版本内容)基础到实战NFT开发》会及时更新新版本solidity内容,以及完成最终的NFT实战商业项目部分。注:由于是付费专栏内容,若有错误请及时联系@1_bit,博客链接:https://blog.csdn.net/A757291228,或在文章下留言,收到后将会对错误进行改正,若是版本更新导致的问题也希望大家对错误进行提交,尽力去保证付费用户该得到的权益。文章目录可查看:目录(文章更新中…)更新内容将会在目录中更新…友情提示:本系列文章读者最好学过一门编程语言,面向对象语言更佳,文章所有代码将会完整贴出。一、库librarysolidit

c++ - Boost Asio - 使用 shared_ptr 处理解析器和套接字

我有一个类能够通过TCP发送消息。这里是简化的界面:classCommandScreenshot:publicCameraCommand{public:CommandScreenshot();~CommandScreenshot();voidDispatch(boost::shared_ptrio_service);private:voidresolve_handler(constboost::system::error_code&err,boost::asio::ip::tcp::resolver::iteratorendpoint_iterator);};如您所见,我有一个函数Di

c++ - Visual Studio 忽略 "Additional Library Directories"字段

我有几个我需要使用的库,但我遇到了一个不寻常的错误,这是发生了什么。我创建了一个新项目,并且一如既往地进入properties>Linker>Input以添加额外的依赖项。然后我进入Linker>General并将它们的位置包含在其他库目录下。问题是无论我做什么,VisualStudio似乎都忽略了额外的库目录字段,尽管我在命令行中正确地看到了它。结果,我收到无法打开库(LNK1104)错误。当我将路径放在库旁边并检查拼写错误时,一切正常。我还尝试移动库并提供替代路径,但一切都指向visualstudio,只是忽略了该字段。更奇怪的是,我还有另一个项目,在这个项目中一切正常。有没有人知

c++ - 测试 C++ 代码 : Using test libraries

我学习C++有一段时间了,但这是我第一次接触C++项目(宠物配置解析器库)。我正在使用GoogleC++TestingFramework来测试这个。但我不知道我这样做是否正确。目前,我已经剥离了这个Google测试库的一些部分并将其放入我的项目Test/googletest目录中。它工作正常,但我想知道我是否应该这样做。我在我的项目中包含了测试框架的源代码,它将与我的代码一起发布。这让我感到不舒服。我浏览了someC++projectsonGitHub,试图看看其他人如何处理这个问题。有些有自定义框架,大多数根本不测试代码就解决了整个问题。我想知道我是否做对了,或者我怎样才能采用一种测

c++ - union 中的 std::shared_ptr

我正在实现一个“变体”类,它必须具有尽可能小的内存占用并使用共享指针机制存储一些对象。为此,我想在所有变量类型的类中建立一个union。这包括一些shared_ptr。operator=和复制构造函数必须更改变量的数据类型,从而切换到union中的另一个成员。切换到shared_ptr后,应将其重置为null而无需删除/取消拥有指针。有办法做到这一点吗?当然,还有其他方法可以实现这一点,但在我的例子中,它们通常更复杂、更不安全或消耗更多内存。不过欢迎提出任何建议。谢谢! 最佳答案 重置为null是不够的;的实现std::shared

c++ - cmake find_library 和 CMAKE_FIND_ROOT_PATH

在cmake的find_library函数的文档中,我们有TheCMakevariableCMAKE_FIND_ROOT_PATHspecifiesoneormoredirectoriestobeprependedtoallothersearchdirectories.Thiseffectively“re-roots”theentiresearchundergivenlocations.PathswhicharedescendantsoftheCMAKE_STAGING_PREFIXareexcludedfromthisre-rooting,becausethatvariableisa

c++ - 为什么 C++14 中没有 shared_mutex 或 recursive_shared mutex?

在C++11中,您有mutex、timed_mutex和recursive_mutex。C++14添加了shared_timed_mutex。为什么没有shared_mutex或shared_recursive_mutex是有原因的? 最佳答案 它是在N3995:Aproposaltoaddshared_mutex(untimed)(Revision2)中提出的引用:AttheIssaquahISOC++meetingof2014shared_mutexwasrenamedtoshared_timed_mutexperproposa

c++ - 仅当 CMake 中的 header 更改时才重新链接共享库

使用CMake,是否有一种方法可以生成构建系统,如果共享库的源代码发生变化而其header未发生变化,则不会重新链接下游的所有内容?在Makefile中,我在共享库本身上使用了带有仅顺序先决条件的规则,并在库header上使用了常规先决条件来获得这种效果。我知道这不能严格保证生成正确的构建,例如您可以从共享库中删除函数定义,但这是为了快速重建调试版本,根据我的经验,它几乎总能生成正确的版本。我认为我遇到过一两次运行时链接器错误,但在那个奇怪的情况下,像往常一样运行构建并没有太大问题。不过,如果有充分的理由表明这实际上是一个糟糕的想法并且不应该这样做,那也可能是一个答案。