草庐IT

shared-libraries

全部标签

c++ - Windows 上 DLL Exporting/Importing 和 Extern 的问题

我有一些关于Windowsdll的快速问题。基本上我使用ifdefs来处理dllexport和dllimport,我的问题实际上是关于dllexports和dllimports以及extern关键字的放置。我将dllimports/dllexports放在头文件中,但我是否必须将dllexport和dllimports放在实际定义中?对于typedef呢?我是否将dllimport/dllexport放在前面?如dllexporttypedefmapst_map另外关于extern关键字,我看到它被这样使用:extern"C"{dllexportvoidfunc1();}我也看到它被这

c++ - 保持大型 C++ 项目模块化的建议?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。Improvethisquestion我们的团队正在转向规模更大的项目,其中许多项目在其中使用了多个开源项目。有什么建议或最佳实践可以使库和依赖项相对模块化并在新版本发布时易于升级?换句话说,假设您制作的程序是开源项目的分支。随着这两个项目的发展,维护和共享核心更新的最简单方法是什么?关于我要问的问题的建议......我不需要“你应该这样做”或“你为什么......谢谢。”

c# - 将 shared_ptr 与托管语言引用进行比较

有人可以向C++程序员解释Java(以及C#)引用和shared_ptr(来自Boost或C++0x)之间最重要的区别。我或多或少知道shared_ptr是如何实现的。我很好奇以下方面的差异:1)性能。2)骑自行车。shared_ptr可以循环(A和B持有指向彼此的指针)。在Java中可以骑自行车吗?3)还有什么吗?谢谢。 最佳答案 性能:shared_ptr性能不错,但根据我的经验,它的效率略低于显式内存管理,主要是因为它是引用计数的,并且必须分配引用计数以及。它的性能如何取决于很多因素,它与Java/C#垃圾收集器相比的性能如何

c++ - 我应该在使用之前检查 boost::shared_ptr 或 std::shared_ptr 吗?

voidf(boost::shared_ptrptr){if(ptr)//shouldwecheck?//dosomething}voidf2(int*p){if(p)//goodpracticetocheckbeforeusingit//dosomething}问题:我们是否应该在使用前验证shared_ptr? 最佳答案 没有。如果在函数的约定中它必须是有效的,那么引起人们注意调用者有错误这一事实的最快方法就是崩溃。尽早失败。 关于c++-我应该在使用之前检查boost::share

c++ - 多态性和 shared_ptr 成员

测试多态性&虚函数&shared_ptr,我试图理解以下最小示例描述的情况。classB{public://DefinitionofclassBvirtualvoidsomeBMethod(){//Makeaburger};};classC:publicB{public://DefinitionofclassCvoidsomeBMethod(){//Makeapizza};};classA{public:A(B&SomeB):Member(std::make_shared(SomeB)){};std::shared_ptrMember;};现在,我们基本上可以拥有intmain(){C

c++ - 访问 shared_ptr 数组

#includeintmain(){std::shared_ptrarray(newdouble[256],[](double*d){delete[]d;});}我制作了一个shared_ptr指向一个double组,它有自己的自定义删除器。现在如何访问数组?假设我希望访问索引为1的数组。我尝试了通常的“括号方法”,但出现错误。单词array默认指向它的第一个元素,但是如果我想访问第二个元素怎么办?使用增量和括号给我“不匹配运算符”错误。有人可以向我解释幕后发生的事情吗?我问这个是为了研究目的,尽管我知道unique_ptr和vector会做得更好。 最佳答

c++ - enable_shared_from_this 需要什么?

这个问题在这里已经有了答案:Whatistheusefulnessof`enable_shared_from_this`?(6个答案)关闭6年前。我是C++11的新手,我遇到了enable_shared_from_this。我不明白它试图达到什么目的?所以我有一个使用enable_shared_from_this的程序。structTestCase:enable_shared_from_this{std::shared_ptrgetptr(){returnshared_from_this();}~TestCase(){std::coutobj1(newTestCase);std::sh

c++ - 比较由 Boost Graph Library 创建的 2 个图

这可能是一个相当新手甚至错误的问题,所以请原谅。有没有一种方法可以比较使用BoostGraphLibrary=>创建的2个图与在内存中创建的1个图以及从存档加载的第2个图(即第2个之前已序列化)?我没有在BGL的文档中看到运算符==,但不确定这是否意味着我必须同时编写遍历和比较。任何指向教程、引用页或示例的指针都将是最有帮助的提前致谢象头神 最佳答案 Boost.Graph可以做到这一点,但不能使用==运算符:http://www.boost.org/doc/libs/1_39_0/libs/graph/doc/isomorphis

c++ - 如何克服 make_shared constness

我遇到了一个问题,无法决定正确的解决方案是什么。下面是用于说明的代码示例:#include#includeclassTestClass{public:inta;TestClass(int&a,intb){};private:TestClass();TestClass(constTestClass&rhs);};intmain(){intc=4;boost::shared_ptrptr;//NOTE:twostepinitializationofsharedptr//ptr=boost::make_shared(c,c);//(newTestClass(c,c));}问题是我无法创建sh

c++ - 使用 shared_ptr 时奇怪的双析构函数调用

最后我找到了一个非常奇怪的错误,这是由两次调用析构函数引起的。这是重现错误的最少代码:#include#include#includeclasscEventSystem{public:cEventSystem(){std::cout(eventSystem);}voidonEvent(){}std::shared_ptrtileBrowser;};intmain(){cEventSystemeventSystem;cGuigui(eventSystem);}输出是:constructor:0x7fffffffe67fdestructor:0x7fffffffe2dfdestructor