草庐IT

c++ - cmake:target_link_libraries 使用未共享的静态库

是否可以告诉cmake链接到静态库而不是共享?在我的CMakeLists.txt顶部,我配置了以下内容:set(CMAKE_FIND_LIBRARY_SUFFIXES.a${CMAKE_FIND_LIBRARY_SUFFIXES})稍后,我添加了一个二进制文件,并告诉它在Release模式下链接到tcmalloc:target_link_libraries(${BIN_NAME}optimizedtcmalloc_minimal)生成的makefile链接到tcmalloc的共享版本:$makeVERBOSE=1|greptcmalloc/usr/bin/c++...-Wl,-Bdyn

c++ - fatal error LNK1302 : only support linking safe . 网络模块;无法链接 ijw/native .netmodule

我有native非托管代码。我创建了一个托管C++DLL并尝试将此DLL包含到native非托管代码中。我收到以下错误fatalerrorLNK1302:onlysupportlinkingsafe.netmodules;unabletolinkijw/native.netmodule如何将托管C++/CLRDLL包含到native非托管代码中? 最佳答案 确保您添加的是库('.lib')文件,而不是DLL('.dll')作为链接器的输入。那肯定会产生LNK1302错误。 关于c++-f

c++ - 将 bind1st 用于通过引用获取参数的方法

我有一个这样的结构:structA{voidi(inti){}voids(stringconst&s){}};现在当我尝试这个时:bind1st(mem_fun(&A::i),&a)(0);bind1st(mem_fun(&A::s),&a)("");第一行编译OK,第二行报错:c:\programfiles(x86)\microsoftvisualstudio10.0\vc\include\xfunctional(299):errorC2535:'voidstd::binder1st::operator()(conststd::basic_string&)const':memberf

c++ - 是否可以将导入的库添加到 target_link_libraries 来处理包含目录?

不知何故,我正在努力找出是否可以在CMake中定义导入的库,指定目标属性(include_directories和库路径),并希望一旦我将该项目添加到另一个项目中的target_link_libraries,CMake将附加包含目录.假设我在一个名为Module-Conf.cmake的文件中有一个导入的库:add_library(mymoduleSTATICIMPORTED)set_target_properties(mymodulePROPERTIESIMPORTED_LOCATION"${OUTPUT_DIR}/lib")set_target_properties(mymodule

c++ - Boost 是什么意思 "header-only libraries"和 "automatic linking"?

在Boostlibrarydocumentation页面,有两个类别分别名为“HeaderOnlyLibraries”和“AutomaticLinking”。我想“仅标题库”意味着您不必链接到Boost库才能使用它们,“自动链接”意味着你必须链接。但是当我使用Boost.Timer时,我必须链接一个名为timer的静态或动态库(libboost_timer.a和>libboost_timer.so.1.48.0和Linux库路径下的各种软链接(softlink)),这显然是Boost.Timer的确切库文件。我什至需要链接Boost.System和Boost.Chrono,虽然库本身使

C++: LINK : debug\XXXXX.exe not found 或不是由最后一个增量链接构建的;执行完整链接

使用VisualStudio2008SP1,这一行:LINK:debug\XXXXX.exenotfoundornotbuiltbythelastincrementallink;performingfulllink每次编译项目时都会出现,无论我做了多么小的更改。这可能是什么原因? 最佳答案 老问题,但以防万一它仍然是一个问题(而且它是..)。增量链接与生成list文件不兼容(项目选择>链接器>list文件>生成list:是)。实际上,生成list会修改exe/dll,因此链接器必须进行完全链接。有一些解决方法,有关更多详细信息:ht

c++ - 使 : implicit rule to link c++ project

我正在学习制作教程。我正在尝试构建的非常简单的测试项目只有3个文件:./src/main.cpp./src/implementation.cpp和./include/header.hpp这是制作文件。VPATH=srcincludeCPPFLAGS=-Iincludemain:main.oimplementation.omain.o:header.hppimplementation.o:header.hpp在不带任何参数的情况下调用ma​​ke仅构建目标文件,但不链接可执行文件。prog应该有一个隐含的规则,或者我错过了什么?我真的需要有人为我指明正确的方向。谢谢。我使第一个目标名称与

C++ Visual Studio : linking using pragma comment

我遇到了一段使用#pragmacomment(lib,"libraryname")的代码。为什么要使用这种类型的用法,而不是仅从属性菜单链接库?在什么情况下需要这种用法?我在Windows中使用C++Visual Studio 2010.很高兴看到一个需要这种用法的示例。 最佳答案 库编写者可以在公共(public)头文件(.h)中放置#pragmacomment(lib,...)命令。在这种情况下,客户端不需要将此库添加到链接器依赖项列表中。通过在程序中包含一个h文件,客户端会自动链接到所需的库。

c++ - C++ 标准中与 [basic.link]/7 相关的 GCC 和 clang 之间的矛盾结果

这段代码在clang中编译,namespaceA{voidf(){voidg();g();}}voidA::g(){}但如果g在命名空间A中定义如下,GCC只接受代码:namespaceA{voidf(){voidg();g();}voidg(){}}但我相信[basic.link]/7中没有任何内容不允许上面的第一个片段。 最佳答案 [basic.link]/p7,强调我的:Whenablockscopedeclarationofanentitywithlinkageisnotfoundtorefertosomeotherdecl

c++ - 如何使用 link.exe 进行静态链接

我一直在尝试静态链接一个名为Poco的C++库。在Windows上使用VisualStudio2008命令行工具。我构建我的程序:cl/I..\poco\lib/cmyapp.cpplink/libpath:..\poco\libmyapp.objPocoNet.lib这会导致运行时需要PocoNet.dll和PocoFoundation.dll的exe。我花了一些时间阅读Windows中的链接,并了解到cl/MT静态链接到标准库,而cl/MD链接动态。我尝试指定/MT,但这似乎并没有改变任何东西;我的应用程序仍然需要PocoDLL。(我也怀疑/MT是默认行为。)查看..\poco\l