草庐IT

c++ - 是否可以到处替换全局 "operator new()"?

我想替换全局operatornew()和operatordelete()(以及它们的所有变体)以执行一些内存管理技巧。我希望我的应用程序中的所有代码都使用自定义运算符(包括我自己的DLL和第三方DLL中的代码)。我读过的内容表明链接器将选择它在链接时看到的第一个定义(例如,如果首先链接包含自定义operatornew()的库,它将“击败”与CRT链接)。有什么方法可以保证这会发生吗?这样做的规则是什么,因为这确实是一个多重定义的符号(例如,void*operatornew(size_tsize)在全局命名空间中有两个定义)?那些可能与CRT静态链接的第三方DLL呢?即使它们与CRT动态

c++ - 在类静态常量 ODR

我对static有点困惑const的类内初始化成员。例如,在下面的代码中:#includestructFoo{conststaticintn=42;};//constintFoo::n;//NoODRvoidf(constint¶m){std::coutvoidh(){std::cout();//thisshouldbefine}Liveexample我没有定义Foo::n(该行已注释)。所以,我期待电话f(Foo::n)在链接时失败,确实如此。但是,以下行std::cout每当我使用诸如-O1/2/3之类的优化标志时,只能通过gcc编译和链接(clang仍然会发出链接器错误)

c++ - 对 `forkpty' 的 undefined reference

所以我在Ubuntu10.04的Eclipse中开发我的项目。我有以下代码行:#includepid_tpid;intmaster;pid=forkpty(&master,NULL,NULL,NULL);但是当我尝试在Eclipse中构建它时,出现错误:undefinedreferenceto'forkpty'知道如何解决这个问题吗? 最佳答案 您需要-lutil命令行参数(以使用libutil共享库)。对于eclipse:http://zetcode.com/articles/eclipsecdevelopment/选择项目属性。

c++ - 链接到多个 .obj 以对控制台应用程序进行单元测试

有一些问题,希望能得到一些帮助。我在VisualStudio2012的同一个解决方案下有两个项目一些背景知识我创建了一个控制台应用程序,它输出为一个项目中的.exe。在另一个项目中,我设置了googletest以对控制台应用程序项目中的类运行单元测试。如果我能够将主项目编译成静态库,则不会有问题,因为可以链接到.lib,但这不是一个选项。我发现链接到.obj是有效的,但是我需要手动将每个链接输入链接器->输入,并且由于将有大量的类,我可以看到这变得困惑。我该如何解决这个问题,有没有一种方法可以链接到同一文件夹中的所有.obj,或者我是否缺少一个选项? 最佳答

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

c++ - 视觉 C++ 2008 : Finding the cause of slow link times

我有一个遗留的C++项目,它需要很长的时间来构建(几分钟,即使是小的增量更改),我发现大部分时间都花在了链接上。该项目已经在使用预编译头和增量编译。我启用了“/time”命令行参数,希望我能获得有关链接器减慢原因的更多详细信息,并获得以下输出:1>Linking...1>MDMerge:Totaltime=59.938s1>GenerateTransitions:Totaltime=0.500s1>MDFinalize:Totaltime=7.328s1>Pass1:Interval#1,time=71.718s1>Pass2:Interval#2,time=8.969s1>Final

c++ - 让 cURL 与 Visual Studios 2017 一起工作

*编辑:我按照这些步骤在VS2017中使用CURL在64位机器上工作(原始问题见下文):首先安装vcpkg:克隆vcpkg使用gitbash进入C:\ProgramFiles在命令提示符下导航到C:\ProgramFiles\vcpkg在命令提示符下运行:.\bootstrap-vcpkg.bat在命令提示符下运行:vcpkgintegrateinstall然后使用vcpkg和VisualStudios2017命令提示符安装cURL:打开VS2017命令提示符并导航到vcpkg文件夹(vcpkg.exe所在的位置)运行:vcpkginstallcurl[*]:x64-windows(请

c++ - 单一来源项目结构的缺点是什么?

我是目前公司的新人,正在从事由我的直接团队领导编写的项目。公司通常不使用C++,但我的同事用C/C++编写了高效代码。只有我们知道如何用C++编写代码(我和我的领导,所以没有第三种意见可以参与)。在我对项目有了足够的了解后,我意识到整个结构是......特别。它实际上由一个编译单元组成,其中makefile将main.hpp列为唯一源。然后这个头文件包含项目所包含的所有源文件,所以它看起来像一个非常大的列表:#include"foo.cpp"#include"bar.cpp"在试图理解其背后的逻辑时,我意识到这确实适用于这个项目,因为它只是一个接口(interface),每个单元都可以

c++ - 根据需要组装一个函数并快速计算

有一些解释性语言,例如Lisp、Tcl、Perl等,可以很容易地在运行时在您的代码中定义lambda/proc/sub并在同一session中对其进行评估。C++等编译语言的执行速度比解释语言快得多,但在运行时在编译程序中定义一个函数并执行它并不容易,如果可能的话。这里的问题是做以下事情:在运行时定义一个函数:例如,根据初始输入数据导出数据的分析模型。在循环中快速执行上述功能:例如,应用派生的分析模型来分析传入的数据。我看到的一个解决方案不是很漂亮:表示分析模型的过程是基于初始输入数据在嵌入式Tcl中导出的。通过在样本点数组上评估Tcl中的过程创建了一个查找表,乐观地说,这些样本点将覆

c++ - 使用 boost::filesystem 时出现链接器错误?

我有以下代码:#include#includeintmain(){constchar*file_path="my_path";std::cout当我构建时出现以下错误:1>Main.obj:errorLNK2019:unresolvedexternalsymbol"classboost::system::error_categoryconst&__cdeclboost::system::system_category(void)"(?system_category@system@boost@@YAAEBVerror_category@12@XZ)referencedinfunction