草庐IT

disable-link

全部标签

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++ - 如何从 C-Header 导入 "disable"宏

A类使用一个用C编写的库。该库提供了一些在A中使用的数据类型和常量。不幸的是,该库还在其头文件中定义了宏,这些宏与我在main.cpp或其他使用A的类中的C++代码发生冲突。当A.h包含在某处时,如何防止c_library.h的宏被执行?我也愿意接受架构更改,但我不想接触C库。当然,还有#undef指令。但这意味着每个宏或每次碰撞都需要大量手动工作。(好吧,没有太多-但是,嘿,这一定可能更优雅?)代码://main.cpp#include"A.h"...Aa(...)...std::max(x,y);//oops,problemsincemaxisdefinedasmacroinc_l

c++ - N*(connect + send + close) vs (Nagle disable + connect + N*send + close),N > 1

我是套接字编程的新手(正如您已经从我的愚蠢问题中弄清楚的那样),但不要让我感到羞耻,我正在使用TCPposix编写程序。我的约束如下:从客户端发送到服务器的消息应该被读取为字节流,虽然我的应用程序性能不高,但消息应该尽快传递。我编写了一个TCP客户端类,目的是执行以下操作:1次连接-多次发送-1次在流式传输结束时关闭。问题是消息没有近乎实时地传递(我假设它等待有一个更大的包裹更好吞吐量)在网上做了一些研究后,我发现虽然你可以禁用Nagle算法(NA),但这样做是一个非常糟糕的主意。由于我是套接字编程的新手,我不想禁用我不完全理解的功能。所以我有两个(不好的?)选择:连接-发送-关闭每条

c++ - 在 QObject 派生类中重复 Q_DISABLE_COPY

在Qt中有一个宏允许为类声明私有(private)复制构造和赋值运算符:http://qt-project.org/doc/qt-5.0/qtcore/qobject.html#Q_DISABLE_COPY据说这个宏应该用于所有QObject(尤其是QWidget)的派生类。我了解它的工作原理以及它为何有用。我不明白的是:有什么理由在我的QObject派生类中重复Q_DISABLE_COPY而QObject已经包含Q_DISABLE_COPY并且通过这有效地防止我的派生类被复制? 最佳答案 尝试复制派生类时可能打印的错误消息可能是指

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