标签: unresolved-external

调用构造函数时,C++/Qt未解析外部

[解决]这个问题以某种方式解决了关于5-6清理和重建,没有代码被更改

我有一个带有默认构造函数的类,以及一个带有8个参数的构造函数.

从另一个类我试图调用构造函数并传递8个参数,但是当我尝试这样做时,我得到了一个LNK2019 Error.

令我困惑的是,如果我调用默认构造函数,程序编译并运行正常......一切都有正确的包含,必须正常工作,因为我可以调用默认构造函数,我使用QStrings作为一些参数但包含QString因此它不能...任何其他原因任何人都知道为什么我会LNK2019 error为构造函数接受参数而不是它的默认值?

Car.h

#include <QString>
class car
{
public:

    car();
    car(int car_id, QString something, QString something_else, QString something3, int an_int, int another_int, int another_int_i, QString something4);
};
Run Code Online (Sandbox Code Playgroud)

car.cpp

car::car()
{
}

car::car(int car_id, QString something, QString something_else, QString something3, int an_int, int another_int, int another_int_i, QString something4)
{
}
Run Code Online (Sandbox Code Playgroud)

显然我刚刚删除了上下文和值等,但在结构上没有任何区别

DatabaseController.cpp

#include "DatabaseController.h"
#include "car.h"
void DatabaseController::DoSomething()
{
    car *pcar = new car(0, "", "", "", 0, 0, 0, "");
}
Run Code Online (Sandbox Code Playgroud)

interface.cpp …

c++ qt unresolved-external

6
推荐指数
1
解决办法
3473
查看次数

什么是未定义的引用/未解析的外部符号错误以及如何在 Fortran 中修复它?

我正在尝试构建 Fortran 程序,但收到有关未定义引用或未解析的外部符号的错误。我看到了有关这些错误的另一个问题,但那里的答案大多特定于 C++。

使用 Fortran 编写时出现这些错误的常见原因是什么?如何修复/预防它们?


这是构建 Fortran 程序时出现的一系列错误的典型问题。如果您被推荐到这里,或者您的问题作为与此问题重复的问题而被关闭,您可能需要阅读几个答案中的一个或多个。从这个答案开始,它充当所提供解决方案的目录。

fortran linker-errors unresolved-external undefined-reference

6
推荐指数
2
解决办法
3578
查看次数

从cpp文件内联函数时链接器错误

好吧,我在执行以下操作时遇到链接器(未解析的外部符号)错误:

- 我有一个"对象"类 - 它在"object.h"中定义.

它有一个构造函数,如: explicit Object(double x, /* lots more */);

在文件"object.cpp"中我想给该构造函数一个体: Object::object(double x) : _x(x) {}

这工作..但是如果我在"object.cpp"文件中添加关键字"inline":

inline Object::Object(double x) : _x(x) {}
Run Code Online (Sandbox Code Playgroud)

突然出现链接器错误!"错误LNK2019:未解析的外部符号"

为什么? - 这是否意味着我不能使用内联构造函数?

编辑:实际上我注意到所有方法的情况.但是,如果我将所有方法移动到object.h头文件,它就可以工作了.您不能从定义对象的头文件外部内联函数?

EDIT2:好的更新,我决定构建一个快速测试用例:
main.cpp:

#include "a.h"
int main ()
{
    a t;
    t.test(5);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

class a {
public:
    void test (int x);
};
Run Code Online (Sandbox Code Playgroud)

a.cpp

#include <iostream>
#include "a.h"
inline void a::test(int x) {
    std::cout << x << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

这会出现以下错误:

main.obj:错误LNK2019:函数_main中引用的未解析的外部符号"public:void __thiscall a …

c++ linker-errors unresolved-external

5
推荐指数
1
解决办法
2674
查看次数

VS2010中的Magick ++ - 未解析的外部符号

我正在尝试将ImageMagick Magick ++用于VS2010中的C++项目.我从这里安装了库:klick

然后在我的项目中,我将c:/ program files/ImageMagick-6.6.6-Q16/include添加到include文件夹中.然后我尝试使用Magick ++和这段代码:

#include <Magick++.h>
void main(int argc, char ** argv){
    InitializeMagick(*argv);
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用!VS2010返回以下错误:

error LNK2001: unresolved external symbol "__declspec(dllimport) void __cdecl    Magick::InitializeMagick(char const *)" (__imp_?InitializeMagick@Magick@@YAXPBD@Z)
error LNK1120: 1 unresolved externals
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

非常感谢您的帮助!

更新:

将Linker - > Input - > Additionnal Dependencies设置为:

kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;CORE_RL_Magick++_.lib
Run Code Online (Sandbox Code Playgroud)

和Linker - > General - > Additionnal Library目录:

C:\Program Files\ImageMagick-6.6.6-Q16\lib
Run Code Online (Sandbox Code Playgroud)

它仍会导致相同的错误......

更新2

在C:\ Program Files\ImageMagick-6.6.6-Q16\lib中打开.lib文件会导致此错误: 替代文字

更新3

CORE_RL_Magick ++ _.lib确实包含?InitializeMagick @ Magick @@ YAXPEBD @ Z,但不是吗?InitializeMagick @ Magick @@ YAXPBD @ Z. 这是否意味着.lib文件已损坏? …

c++ imagemagick visual-studio-2010 unresolved-external magick++

5
推荐指数
1
解决办法
4568
查看次数

错误LNK2019:未解析的外部符号"toString(int)"

环境:Windows XP.Visual Studios 2010.语言 - C++.

我遇到了以下链接错误,并且已经没有想法如何解决此问题.我有一个项目(CnD设备),它链接到我的小组控制的2个项目(消息和碳).我试图在3个项目之间搜索项目属性

enter tcp_driver.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl toString(int)" (?toString@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) referenced in function "protected: bool __thiscall Tcp_Driver::readMessage(void)" (?readMessage@Tcp_Driver@@IAE_NXZ)
Run Code Online (Sandbox Code Playgroud)

我相信这个问题是因为我没有链接到标准C++库中的字符串.我一遍又一遍地扫描了我的房产清单.以下是我认为对此问题至关重要的一些属性.

CnD设备属性信息:

  1. 配置类型动态库.dll
  2. 使用 MFC在共享DLL中使用MFC
  3. 使用ALT不使用ALT
  4. 字符集使用多字节字符集
  5. 运行时库多线程DLL(/ MD)
  6. 其他依赖项 msvcprtd.lib,Carbon.lib,BUFFER_API.lib,BUFFER_FRAMEWORK.lib,Messages.lib
  7. 忽略所有默认库

消息属性信息:

  1. 配置类型静态库(.lib)
  2. 使用 MFC在共享DLL中使用MFC
  3. 使用ALT不使用ALT
  4. 字符集使用Unicode字符集
  5. 运行时库多线程DLL(/ MD)
  6. 额外的依赖关系
  7. 链接库依赖关系

碳属性信息:

  1. 配置类型静态库(.lib)
  2. 使用 MFC在共享DLL中使用MFC
  3. 使用ALT不使用ALT
  4. 字符集使用Unicode字符集
  5. 运行时库多线程DLL(/ MD)
  6. 链接库依赖关系

我的CnD链接输出是:

1>------ Rebuild …
Run Code Online (Sandbox Code Playgroud)

stdstring visual-studio-2010 unresolved-external lnk2019 c++-standard-library

5
推荐指数
1
解决办法
1万
查看次数

未解决的窗户外部

我正在使用Visual Studio x64 Win64命令提示符(2010)来编译我的代码.我收到一些错误,我通常会知道如何在Visual Studio中修复,但不是只使用命令行.

输出:

Microsoft (R) C/C++ Optimizing Compiler Version 16.00.40219.01 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

main.cpp
Microsoft (R) Incremental Linker Version 10.00.40219.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:main.exe
main.obj
main.obj : error LNK2019: unresolved external symbol __imp_DispatchMessageA referenced in function WinMain
main.obj : error LNK2019: unresolved external symbol __imp_TranslateMessage referenced in function WinMain
main.obj : error LNK2019: unresolved external symbol __imp_PeekMessageA referenced in function WinMain
main.obj : error LNK2019: unresolved external …
Run Code Online (Sandbox Code Playgroud)

c++ unresolved-external

5
推荐指数
1
解决办法
8240
查看次数

未解决的外部符号错误仅在64位模式下发生,而不是在32位构建中发生

我有一个VC++代码(使用VS2008构建),它使用了一些静态库(在编译期间静态链接的*.lib文件).

为了便于理解,我们将我的EXE代码称为"AAA.EXE"并将lib文件称为"A.lib",b.lib等...

AAA.EXE代码和静态库代码都是使用VS2008构建的.

我看到我的"AAA.EXE"在32位版本中工作正常,并且当AAA.EXE以64位模式构建时显示以下链接器错误.

我当然在64位模式下重建了静态库,并在我的AAA.EXE中提供了lib路径,如下所示::"对应于AAA.EXE的项目配置属性 - >链接器 - >常规/输入".

很长一段时间,这个链接器错误确实困扰着我.任何帮助是极大的赞赏.

Logger.lib(Loggerr.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall CWTTLogger::CWTTLogger(void)" (__imp_??0CWTTLogger@@QAE@XZ)    

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall CWTTLogger::~CWTTLogger(void)" (__imp_??1CWTTLogger@@UAE@XZ)    

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::FunctionA(unsigned short *,long *)" (__imp_?FunctionA@CWTTLogger@@QAEJPAGPAJ@Z)     

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::FunctionB(unsigned short *,long)" (__imp_?FunctionB@CWTTLogger@@QAEJPAGJ@Z)     

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::FunctionC(unsigned short *,unsigned …
Run Code Online (Sandbox Code Playgroud)

c++ linker-errors unresolved-external 32bit-64bit visual-c++

5
推荐指数
1
解决办法
1万
查看次数

链接器读取库但在其中找不到符号?未解析的外部符号,但仅适用于Win32而不适用于x64

背景

我有一个C天文库,我想在我的C++应用程序中使用.

我在Win32x64配置中使用Visual Studio 2012 Express构建它,并且:

  • 动态调试(.dll)
  • 动态发布(.dll)
  • 静态调试(.lib)
  • 静态释放(.lib)

...所以这是2*4 = 8个二进制文件(不包括*.pdb文件等)

然后我使用Batch Build来构建所有配置,因为有时我需要不同的版本,并且我发现在开始时完成这一切并且当一个过程很容易混合时,一个过程比偶然更好.

在我的C++应用程序中,我有相同的过程,并根据名称链接到库.具体来说,在我的项目属性链接器 - >输入字段中,我有:

SwissEphemeris_$(Platform)_$(Configuration).lib
Run Code Online (Sandbox Code Playgroud)

...并且正确设置了附加库目录.一切似乎都是对的.库文件位于库目录中.

这是麻烦:

在我拥有的8种配置中,除了两个外,所有配置都正确连接和构建:

  1. Win32动态调试
  2. Win32动态发布

对于这两种配置,相同的链接器错误:

main.obj : error LNK2019: unresolved external symbol _swe_close referenced in function _main
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些诊断或修复的东西,但没有一个有效:

  1. 在新的解决方案/项目中从头开始重建库,确保Win32x64之间没有/MACHINE链接器标志之外的偏差
  2. 创建一个新的解决方案/项目,只有一个main()swe_close()在Win32动态调试配置中调用这个库函数并链接到*.lib.

错误始终相同,如上所示.我已经打开了冗长的链接器输出,真正让我感到困惑的是链接器似乎成功找到并读取了SwissEphemeris_Win32_DynamicDebug.lib文件,但仍无法swe_close()在其中找到符号.即使dumpbin.exe表明符号,在我需要的所有其他符号中,也在其中.

1>  Unused libraries:
1>    E:\Data\Code\lib\SwissEphemeris\SwissEphemeris_Win32_DynamicDebug.lib
1>    C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\user32.lib
1>    C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\gdi32.lib
1>    C:\Program …
Run Code Online (Sandbox Code Playgroud)

c++ dll unresolved-external visual-studio-2012

5
推荐指数
1
解决办法
1万
查看次数

VC++中未解决的外部错误

我正在学习vc ++并使用代码检查内存的使用信息.这个程序给了我三个未解决的外部错误..

error LNK2019: unresolved external symbol _GetProcessMemoryInfo@12 referenced 
in function "void __cdecl PrintMemoryInfo(unsigned long)" 
(?PrintMemoryInfo@@YAXK@Z)

error LNK2019: unresolved external symbol _EnumProcesses@12 referenced in 
function _main

error LNK1120: 2 unresolved externals.
Run Code Online (Sandbox Code Playgroud)

码::

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <psapi.h>

// To ensure correct resolution of symbols, add Psapi.lib to TARGETLIBS
// and compile with -DPSAPI_VERSION=1

void PrintMemoryInfo( DWORD processID )
{
    HANDLE hProcess;
    PROCESS_MEMORY_COUNTERS pmc;

    // Print the process identifier.

    printf( "\nProcess ID: %u\n", processID );

    // Print information …
Run Code Online (Sandbox Code Playgroud)

c++ unresolved-external lnk2019 visual-c++

5
推荐指数
2
解决办法
3115
查看次数

C++ cURL 链接错误“未解析的外部符号 _curl_easy_”

我在 Windows 上使用 Visual Studio 2012 时遇到了 C++ cUrl 库的问题。

我有一个生成 .cgi 文件的CGI项目。该项目包括另一个名为Library 的项目,它是一个静态库项目

项目中,我有使用 cUrl 并包含curl/curl.h. 我参考了Preprocessor Definition CURL_STATICLIB

然后在我的CGI 项目中,我libcurl.libConfiguration Properties > Linker > Additional Dependencies 中链接到我的项目。

但是当我尝试构建解决方案时,我仍然有这些错误:

error LNK2001: unresolved external symbol _curl_easy_setopt in Library.lib(fct_util.obj)
error LNK2001: unresolved external symbol _curl_easy_perform in Library.lib(fct_util.obj)
error LNK2001: unresolved external symbol _curl_easy_init in Library.lib(fct_util.obj)
error LNK2001: unresolved external symbol _curl_easy_cleanup in Library.lib(fct_util.obj) …
Run Code Online (Sandbox Code Playgroud)

c++ curl unresolved-external visual-studio visual-studio-2012

5
推荐指数
1
解决办法
1387
查看次数