草庐IT

nfs-subdir-external-provisioner

全部标签

c++ - Clrdump (C++) 错误 LNK2019 : unresolved external symbol __imp__RegisterFilter@8 referenced in function _main

我正在使用带有pvcs编译器的makefile系统(使用MicrosoftVisualC++,2008编译器),我收到了几个以下形式的链接错误:errorLNK2019:unresolvedexternalsymbol__imp__RegisterFilter@8referencedinfunction_main尽管使用了extern"C"声明,但还是会发生这种情况,即:extern"C"intCLRDUMP_APIRegisterFilter(LPCWSTRpDumpFileName,unsignedlongDumpType);此外,在makeexe.mak中,库链接如下:$(编译库

c++ - C++中extern "C"有什么作用?

将extern"C"放入C++代码中究竟有什么作用?例如:extern"C"{voidfoo();} 最佳答案 extern"C"使C++中的函数名称具有C链接(编译器不会破坏名称),以便客户端C代码可以使用C兼容header链接(使用)您的函数只包含函数声明的文件。您的函数定义包含在二进制格式中(由您的C++编译器编译),然后客户端C链接器将使用C名称链接到该二进制格式。由于C++具有函数名称的重载而C没有,C++编译器不能仅使用函数名称作为链接的唯一ID,因此它通过添加有关参数的信息来破坏名称。C编译器不需要破坏名称,因为您不能

c++ - 为什么他们坚持在下面的示例中使用 `extern` 说明符?

[basic.link]/6(我的重点):Thenameofafunctiondeclaredinblockscopeandthenameofavariabledeclaredbyablockscopeexterndeclarationhavelinkage....staticvoidf();staticinti=0;voidg(){externvoidf();//internallinkageinti;//#2ihasnolinkage{externvoidf();//internallinkage[basic.link]/7:...namespaceX{voidp(){q();//

c++ - Qt 上的 PRECOMPILED_HEADER 和 Subdirs 模板

我有一个大型Qt项目,分为几个静态库(大约70个)和一个应用程序,为此我使用了一个带有子目录模板的.pro文件。为了加快编译时间,我想使用预编译头,发现在每个子项目上使用PRECOMPILED_HEADER可以解决问题,但是,每个项目都单独编译预编译头(这是最慢的一步)。有没有一种方法可以在子目录模板中包含的所有子项目之间“共享”预编译头?这样预编译头就可以一次构建,并被所有子项目使用?问候 最佳答案 经过一些实验后,我发现无法在子项目之间共享预编译头文件。我认为缺少此功能背后的基本原理是每个子项目都可能更改编译器/预处理器标志,这

c++ - 仅在 header 中的extern变量意外起作用,为什么?

我当前正在更新Arduino的C++库(使用avr-gcc编译的8位AVR处理器)。通常,默认Arduino库的作者喜欢在header中包含该类的extern变量,该变量也在.cpp类文件中定义。我认为基本上是为了让新手能够将所有东西都准备好作为内置对象。我遇到的情况是:我更新的库不再需要.cpp文件,并且已将其从库中删除。直到我进行最后一遍检查发现的错误之后,尽管没有为.cpp文件中的extern变量提供定义的事实,但没有产生链接器错误。这很简单,我可以得到它(头文件):structFoo{voidmethod(){}};externFoofoo;包含此代码并将其用于一个或多个源文件

c++ - 扭曲的逻辑 : a global variable in one file refers to an extern variable but is also referred by that extern variable

文件A.cpp:#includeexternintiA;externintiB=iA;intmain(){std::cout文件B.cppexternintiB;externintiA=2*iB;编译链接运行,out进来debug和release模式是0,0我的问题是它是如何工作的,为什么在链接阶段没有问题?我正在使用VC++2003。 最佳答案 初始化程序覆盖了extern关键字,因此这没有什么“神奇”:您只是在不同的翻译单元中声明和定义两个完全不相关的变量。来自StandardforProgrammingLanguageC++-

c++ - 更好地理解 extern "C"函数

我只是想进一步了解externC函数。据我所知,externC函数始终是您尝试从已编译的应用程序调用的函数。可执行文件、静态或动态库。extern"C"{HRESULTCreateDevice();typedefHRESULT(*CREATEDEVICE)();HRESULTReleaseDevice();typedefHRESULT(*RELEASEDEVICE)();}所以我的问题是...我的理解对吗??它总是必须是C函数指针吗??'为什么必须为每个函数使用typedef??我假设当您使用GetProcAddress()时。您正在为特定应用程序HEAP而不是您从中调用它的应用程序分

c++ - 使用 `extern template` 防止模板类的隐式实例化

考虑以下代码片段:templatestructX{};externtemplatestructX;intmain(){X{};}它编译并链接:liveexampleongodbolt.org.由于externtemplate声明,我希望它不会链接。我的理解是externtemplate的意思是:“请不要在这个TU中实例化这个特定的模板特化,它将由其他一些TU提供,你可以链接到它”.示例/描述。我在isocpp上看到过,cppreference似乎验证了我的心智模型。例如Fromhttps://en.cppreference.com/w/cpp/language/class_templa

c++ - extern 在命名空间中如何工作?

我正在运行一个类似于我发现的简单程序here.它旨在减少在多个文件中包含常量时的代码膨胀。它通过在命名空间中使用const全局变量及其各自的extern前向声明来实现这一点。globals.h#ifndefGLOBALS_H_#defineGLOBALS_H_namespaceConstants{//forwarddeclarationsonlyexternconstdoublepi;externconstdoubleavogadro;externconstdoublemy_gravity;}#endif全局变量.cppnamespaceConstants{//actualglobal

c++ - extern 在 C++ 中如何工作?

这是来自:namespacestd{externistreamcin;///似乎通过使用extern其他命名空间中定义的数据类型是否可用? 最佳答案 extern表示“这些变量在其他一些编译单元(.cpp或.lib文件)中定义”在这种情况下,您#include进入你的.cpp文件,因为cin和cout被声明为extern,编译器会让你毫无怨言地使用它们。然后,当链接器运行时,它会查找所有extern变量并将其全部排序。 关于c++-extern在C++中如何工作?,我们在StackOve