草庐IT

c++ - QtCreator多定义构建bug

这是我的.pro文件:QT+=coreguiwidgetsTARGET=link_mult_defTEMPLATE=appSOURCES+=main.cpp\path2/file.cpp\path1/file.cppHEADERS+=出于某种原因,QtCreator在从.cpp文件构建.o文件时不遵循源文件夹结构。这两个文件都将编译为“shadow_build_directory/file.o”。我希望构建过程在影子构建目录中创建path1和path2目录,并将“path1/file.cpp”编译为“shadow_build_directory/path1/file.o”,将“path

c++ - VC8 到 VC10 - LNK2005 错误

我最近安装了VisualStudio2010并使用CMake为我的项目生成了解决方案文件。此过程以前在VS2005上运行良好。我遇到的第一个问题是因为新的“移动构造函数”,所以我不得不从我的代码中删除一些隐式转换——很公平,现在可以了。我目前的情况如下:我正在编译DLL1,它只依赖于一些系统库(Kernel32等)和CRT,并且DLL2,它链接到DLL1,以及一些第三方库。我得到的错误是:DLL1.lib(DLL1.dll):errorLNK2005:"public:__thiscallstd::basic_string,classstd::allocator>::~basic_str

c++ - 错误 LNK2019 : unresolved external symbol

我最近又开始用C++编程了,出于教育目的,我正在开发一款扑克牌游戏。奇怪的是,我不断收到以下错误:1>LearningLanguage01.obj:errorLNK2019:unresolvedexternalsymbol"public:__thiscallPokerGame::Poker::Poker(void)"(??0Poker@PokerGame@@QAE@XZ)referencedinfunction"void__cdecl`dynamicinitializerfor'pokerGame''(void)"(??__EpokerGame@@YAXXZ)1>LearningLan

c++ - 对 `mysql_init' 的 undefined reference

我正在尝试在我的新服务器上编译我的程序,但它目前对我不起作用。错误日志是:rasmus@web01:~/c++$maketestg++`mysql_config--cflags--libs`main.cpplogger.cppcpulogger.cpp-otest/tmp/ccPaMZUy.o:Infunction`CPULogger':/home/rasmus/c++/cpulogger.cpp:7:undefinedreferenceto`mysql_init'/home/rasmus/c++/cpulogger.cpp:8:undefinedreferenceto`mysql_r

c++ - 静态变量被初始化两次

假设我在一个编译单元中有一个静态变量,它最终出现在一个static库libA中。然后我有另一个编译单元访问这个变量,它最终在一个shared库libB.so中(所以libA必须链接到libB)。最后我有一个主函数也直接从A访问静态变量and依赖于libB(所以我链接到libAandlibB)。然后我观察到,静态变量被初始化了两次,即它的构造函数运行了两次!这似乎不对。链接器不应该将两个变量识别为相同的变量并将它们作为一个变量进行优化吗?为了让我的困惑更加完美,我看到它使用相同的地址运行了两次!所以也许链接器确实识别了它,但没有删除static_initialization_and_de

c++ - 改变静态链接 DLL 的 DLL 搜索路径

我搜索了如何执行此操作的任何提示,但我所找到的只是如何将SxSDLL重定向到本地应用程序文件夹。这是我想要完成的:(C++)Application.exe链接到一个DLL,Plugin.DLL(依赖项目)。这个DLL没有放在应用程序目录中,而是放在一个名为“plugins”的子文件夹中。由于DLL是静态链接的,应用程序会尝试从应用程序文件夹中加载它。有什么方法可以改变这个特定DLL的搜索路径吗?通过list或VS2008链接器配置? 最佳答案 我的第一个想法是,如果您静态链接一个dll,它就不是插件。把dll放到EXE文件夹下就搞定

c++ - 我可以要求 VC++ 链接器忽略未解析的外部吗?

我正在尝试使用VC++构建一个非常复杂的开源项目。该项目由数十个库和一个依赖于这些库的可执行文件组成。出于某些原因,VC++链接器不希望看到其中一个库中实现了大约40个函数,并在每个库上报告“未解析的外部引用”,因此我无法链接。我不想浪费时间解决问题-这些函数可能从未被调用过。我只想让链接器链接它看到的内容并插入一些合理的错误处理(例如报告错误和终止程序)而不是缺少函数。我该怎么做? 最佳答案 您可以使用/FORCE:UNRESOLVED链接器选项。该文档包含相当低调的警告:Afilecreatedwiththisoptionmay

c++ - ld.exe 找不到-lGL

我最近买了一本关于OpenGL的书,并试图按照示例进行操作,但我无法让OpenGL正常工作。例如,它给我错误:ld.exe||cannotfind-lGL|.我的编译器是GNU-GCCMinGW,使用IDECode::Blocks,我的操作系统是Windows764位。我已经链接了库:opengl32、glu32、glut32,在其他链接器选项中我有:-lmingw32-lSDLmain-lSDL,因为这是在code::blockswiki上建议的。我有一些使用C++的经验,但在链接和设置编译器方面一无所知,因为这过去非常自动。如何修复此错误? 最佳答案

c++ - 在另一台计算机上启动使用 MinGW 编译的 Windows 应用程序时出现库链接错误

我编写了一个简单的HelloWorld控制台应用程序,并使用以下命令之一在Windows7上使用MinGW编译器对其进行了编译:gcc-Wall-pedanticHello.c-oHello.exeg++-Wall-pedanticHello.cpp-oHello.exe但是编译器将一些自己的动态库链接到应用程序中,当我将可执行文件复制到另一台未安装MinGW的Windows7计算机时,我遇到了缺少库的错误。在Linux上,这个问题通过包系统解决,它会自动安装所有需要的库,但在Windows中,您肯定不想告诉您的用户安装MinGW才能运行您的程序。所以我的问题是:如何正确链接所有库以及

windows - 链接到 User32.dll 时出现链接错误 2001

我正在尝试链接一个目标文件,该文件使用在winuser.h中声明并在User32.dll中定义的两个方法:GetMonitorInfo和WindowFromMonitor。源代码编译成一个目标文件就好了,但是当我尝试链接时,我得到以下错误输出:D3dCtx.obj:errorLNK2001:unresolvedexternalsymbolxGetMonitorInfoD3dCtx.obj:errorLNK2001:unresolvedexternalsymbolxMonitorFromWindow问题是,我不调用“xGetMonitorInfo”或“xMonitorFromWindow