精华内容
下载资源
问答
  • 错误信息报错如下 1.有可能是采用lib库的平台配置错误,打开项目属性发现当初配置的是Release x64,而执行代码...类似前面提示(xxx.lib,xxx.obj等)libcrypto.lib: error LNK2001: 无法解析的外部符号,我们查找返...

    错误信息报错如下

    1.有可能是采用lib库的平台配置错误,打开项目属性发现当初配置的是Release x64,而执行代码是Debug x64

     修改执行代码的配置和平台即可,执行成功

    2.编译器会出现“LNK2001: 无法解析的外部符号”错误。类似前面提示(xxx.lib,xxx.obj等)libcrypto.lib : error LNK2001: 无法解析的外部符号,我们查找返现这个库在如下位置

    这个是最常见的问题,具体步骤:
    项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录


    项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib (libcrypto.lib)

    3,若已经按照上述步骤进行配置,但编译器还是报错,可能情况如下:

    没有添加指定预编译宏

    在使用curl静态库时,却遇到了编译链接错误:
    1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_init
    1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_setopt
    1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_perform
    1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_cleanup

    解决方法是,在自己的项目属性中添加一个预编译宏,CURL_STATICLIB,

    为了避免遇到以上问题建议:

    1、引用第三方库时,确认lib库是否使用相同编译平台
    2、确认编译选项是否一致。比如运行时库和字符集
    3、若需要则添加指定编译宏
    4、添加附加库目录和附加依赖项
     

    展开全文
  • [Qt4]VS2010编译提示 error LNK2001: unresolved external symbol “public: virtual struct QMetaObject const * __cdecl 等错误的解决方案 moc处理C++

    刚学习Qt4编程,在编译一个小程序的时候出现了链接错误。


    报错如下

    1>—— 已启动全部重新生成: 项目: Test, 配置: Debug x64 ——
    1> FindDialog.cpp
    1> main.cpp
    1> Generating Code…
    1>FindDialog.obj : error LNK2001: unresolved external symbol “public: virtual struct QMetaObject const * __cdecl FindDialog::metaObject(void)const ” (?metaObject@FindDialog@@UEBAPEBUQMetaObject@@XZ)
    1>FindDialog.obj : error LNK2001: unresolved external symbol “public: virtual void * __cdecl FindDialog::qt_metacast(char const *)” (?qt_metacast@FindDialog@@UEAAPEAXPEBD@Z)
    1>FindDialog.obj : error LNK2001: unresolved external symbol “public: virtual int __cdecl FindDialog::qt_metacall(enum QMetaObject::Call,int,void * *)” (?qt_metacall@FindDialog@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)
    1>FindDialog.obj : error LNK2001: unresolved external symbol “public: static struct QMetaObject const FindDialog::staticMetaObject” (?staticMetaObject@FindDialog@@2UQMetaObject@@B)
    1>FindDialog.obj : error LNK2019: unresolved external symbol “protected: void __cdecl FindDialog::findNext(class QString const &,enum Qt::CaseSensitivity)” (?findNext@FindDialog@@IEAAXAEBVQString@@W4CaseSensitivity@Qt@@@Z) referenced in function “private: void __cdecl FindDialog::findClicked(void)” (?findClicked@FindDialog@@AEAAXXZ)
    1>FindDialog.obj : error LNK2019: unresolved external symbol “protected: void __cdecl FindDialog::findPrevious(class QString const &,enum Qt::CaseSensitivity)” (?findPrevious@FindDialog@@IEAAXAEBVQString@@W4CaseSensitivity@Qt@@@Z) referenced in function “private: void __cdecl FindDialog::findClicked(void)” (?findClicked@FindDialog@@AEAAXXZ)
    1>C:\Users\Grey\Desktop\Test\x64\Debug\Test.exe : fatal error LNK1120: 6 unresolved externals
    ========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========


    原因
      对于所有定义了信号和槽的类,在类定义的开始处的Q_OBJECT宏都是必需的。由于FindDialog类的定义包含Q_OBJECT宏,因而由qmkae生成的makefile将会自动包含一些运行moc的规则,moc(meta-object compiler)是Qt的元对象编译器。

                         Qt的元对象系统
     Qt的主要成就之一就是使用了一种机制对C++进行了扩展,并且使用这种机制创建了独立的软件组件。这些组件可以绑定在一起,但任何一个组件对于它所要连接的组件的情况事先都一无所知。

     这种机制称为元对象系统(meta-object system),它提供了关键的两项技术:信号-槽以及内省(introspection)。内省功能对于实现信号和槽是必需的,并且允许应用程序的开发人员在运行时获得有关QObject子类的“元信息”(meta-infomation),包括一个含有对象的类名以及它所支持的信号和槽的列表。这一机制也支持属性(广泛用于Qt设计师中)和文本翻译(用于国际化),并且它也为QtScript模块奠定了基础。从Qt4.2开始,可以动态添加属性。

     标准C++没有对Qt的元对象系统所需要的动态元信息提供支持。Qt通过提供一个独立的moc工具解决了这个问题,moc解析Q_OBJECT类的定义并且通过C++函数来提供可供使用的信息。由于moc使用纯C++来实现它的所有功能,所以Qt的元对象系统可以在任意C++编译器上工作。

     由于程序中使用了Q_OBJECT宏来定义类,所以必须运行moc来生成用于由Q_OBJECT声明的所有函数和所有信号的实现。


    解决方案
    将cmd目录跳到工程文件目录下,然后执行cmd命令(moc.exe是Qt下的工具,执行命令前保证Qt的bin目录已经添加到系统环境变量PATH中):

    moc FindDialog.h –o moc_FindDialog.cpp

    同目录下会生成一个moc_FindDialog.cpp文件,将该文件添加到VS工程中即可编译通过。

    展开全文
  • GLUT_DISABLE_ATEXIT_HACK 1>blendequ.cpp 1>正在链接... 1>blendequ.obj : error LNK2001: 无法解析的外部符号 __imp_...1>blendequ.obj : error LNK2001: 无法解析的外部符号 __imp____glutCreateWindowWith
     
    
    GLUT_DISABLE_ATEXIT_HACK

    1>blendequ.cpp
    1>正在链接...
    1>blendequ.obj : error LNK2001: 无法解析的外部符号 __imp____glutInitWithExit@12
    1>blendequ.obj : error LNK2001: 无法解析的外部符号 __imp____glutCreateWindowWithExit@8
    1>E:\program practice\vs2005\blendequ\Debug\blendequ.exe : fatal error LNK1120: 2 个无法解析的外部命令
    1>生成日志保存在“file://e:\program practice\vs2005\blendequ\blendequ\Debug\BuildLog.htm”
    1>blendequ - 3 个错误,0 个警告
    ========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========

    为什么出现这个错误,这是我在国外的网站上找到的原因,和大家分享一下:

    Win32 has an annoying issue where there are multiple C run-time
    libraries (CRTs). If the executable is linked with a different CRT
    from the GLUT DLL, the GLUT DLL will not share the same CRT static
    data seen by the executable. In particular, atexit callbacks registered
    in the executable will not be called if GLUT calls its (different)
    exit routine). GLUT is typically built with the
    "/MD" option (the CRT with multithreading DLL support), but the Visual
    C++ linker default is "/ML" (the single threaded CRT).
    One workaround to this issue is requiring users to always link with
    the same CRT as GLUT is compiled with. That requires users supply a
    non-standard option. GLUT 3.7 has its own built-in workaround where
    the executable's "exit" function pointer is covertly passed to GLUT.
    GLUT then calls the executable's exit function pointer to ensure that
    any "atexit" calls registered by the application are called if GLUT
    needs to exit.

    Note that the __glut*WithExit routines should NEVER be called directly.
    To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK. *

    展开全文
  • 1、当vs2010编译qt时会出现以下错误:  1>------ 已启动全部重新生成: 项目: MyDialog, 配置: Debug Win32 ------  1>生成启动时间为 2015/9/9 14:57:04。  1>InitializeBuildStatus:  1> 正在创建“Debug\...

    1、当vs2010编译qt时会出现以下错误:

               1>------ 已启动全部重新生成: 项目: MyDialog, 配置: Debug Win32 ------
               1>生成启动时间为 2015/9/9 14:57:04。
               1>InitializeBuildStatus:
               1>  正在创建“Debug\MyDialog.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
               1>CustomBuild:
               1>  Moc'ing LoginDlg.h...
               1>ClCompile:
               1>  LoginDlg.cpp
               1>  main.cpp
               1>  正在生成代码...
               1>LoginDlg.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall CLoginDlg::metaObject(void)const " (?         metaObject@CLoginDlg@@UBEPBUQMetaObject@@XZ)
               1>LoginDlg.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall CLoginDlg::qt_metacast(char const *)" (?qt_metacast@CLoginDlg@@UAEPAXPBD@Z)
               1>LoginDlg.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall CLoginDlg::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@CLoginDlg@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
               1>D:\VC++\QtT\MyDialog\\MyDialog.exe : fatal error LNK1120: 3 个无法解析的外部命令
               1>
               1>生成失败。
               1>
               1>已用时间 00:00:03.23
                ========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========

    2、出现以上错误的原因是由于在GeneratedFiles/Debug文件中缺少一个moc_XXX.cpp文件,如下图所示:

    3、缺少的文件名是什么呢?那么首先要找到Q_OBJECT宏在那个头文件中,比如在上图中该宏在LoginDlg.h文件中,那么生成的文件时moc_LoginDlg.cpp,要生成此文件需要qt库中的一个moc.exe文件,如下图所示:

    4、通过cmd进入到此目录中,然后执行:moc "D:\VC++\QtT\MyDialog\MyDialog\LoginDlg.h" -o "D:\VC++\QtT\MyDialog\MyDialog\moc_LoginDlg.cpp"

    如下图所示:

    5、然后会在D:\VC++\QtT\MyDialog\MyDialog\目录生成一个moc_LoginDlg.cpp文件,如下图所示:

    6、将moc_LoginDlg.cpp文件拷贝到GeneratedFiles/Debug目录中,并在vs中添加该文件,如下图所示:

    7、重新编译即可,如下图:

    展开全文
  • 项目中自定义了一个类只是用来存储数据class data,私有成员为一个Qstring,四个double,构造函数为...double,double,double,double)这个符号无法解析,求解,按照网上的将上次编译成功后生成的文件夹也删掉了还是没用
  • 1>SurfDescriptor.obj : error LNK2001: 无法解析的外部符号 __imp___CrtDbgReportW 1>Validate.obj : error LNK2001: 无法解析的外部符号 __imp___CrtDbgReportW 1>Visualize.obj : error LNK2001: 无法解析的...
  • 错误源码: 背景:用到#include编译虚拟摄像头模块,编译成功,链接时报了如上错误 原来是由于没有没链 dx 的库 解决方案:
  • VS编译期间遇到各式各样的链接LNK错误,作一汇总: ...所以只能通过编译,连接不成功。 2.另一个原因是函数的声明和实现都放在头文件中了,一般要把声明放头文件中,实现放在cpp文件中。这样每个#include...
  • 使用tinyxml不太爽。用nuget直接使用。结果编译出错,Link找不到相应的函数。...但是库文件编译成功。那就直接拿来用。把tinyxml.h文件拷过来,加入到自己的工程当中。把编译出来的Lib文件路径,加入到自己的项目...
  • 再运行“nmake -f ms\nt.mak test” 也有 [color=#0000FF]“passed all tests”[/color]被打印出来,说明编译都是成功的。 然后一段测试代码: #include <stdio.h> #include "openssl/ssl.h" #...
  • 照着网络教程,也查阅了ODB的文档(https://www.codesynthesis.com/products/odb/doc/manual.xhtml#2.1),发现仍然会报错,错误内容都是“无法识别的外部符号”,报错同时出现LNK2019+LNK1120+LNK2001。 由...
  • 在使用QT + VS2005编译程序时,有时出现如下错误:错误 1 error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall Widget::metaObject(void)const " (?metaObject@Widget@@...
  • 今天调试一个程序在同学电脑可以运行 在我的电脑却不可以 用了很多方法 上网查询 说是因为链接出了问题 就是可能没有包含某个库文件或者是所包含的库...于是 将V7.0中的lib和include 全部换掉之后 运行果然成功
  • 加上windows.h这个头文件,没有这个问题前提:编译gsl库成功,用其他功能正常,但是使用 gsl_rng.h头文件,出现问题;使用语句gsl_rng_alloc(gsl_rng_env_setup()),这样没问题,gsl_rng_env_setup()设置的是默认gsl...
  • 1.FFmpeg切换新的版本后,编译就报一堆...突然发现有个低级错误,新版是64位的库,马上在VS2015工程里面切换位64位工程,编译成功。 3.总结,一般的无法解析外部符号错误,大都是和lib库相关,这里的64位和32位...
  • error LNK2001 error LNK 2019 error MSB8020
  • 今天在VC2005中修改一个工程的文件结构,将"stdafx.cpp"文件挪动了位置,编译时出现C2859错误,具体信息如下:  error C2859: e:\projects\apptest\src\debug\vc80.pdb is not the pdb file that was used ...
  • 1. 问题描述 使用Qt创建"Empty qmake Project"时,添加main.cpp文件,包含(#...两个文件,在main函数中创建并使用了QApplication和QLabel的变量(对象),编译成功,而链接出错,报LNK2019和LNK2001两个错误。...
  • 今天在VC2005中修改一个工程的文件结构,将"stdafx.cpp"文件挪动了位置,编译时出现C2859错误,具体信息如下: error C2859: e:/projects/apptest/src/debug/vc80.pdb is not the pdb file that was used when ...
  • 最近在领用OpenCV3.4.2和QT5.8开发过程中遇到一些问题,在Release模式下编译的时候,经常报Error LNK2019. error LNK2019: 无法解析的外部符号 "public: void __cdecl cv::Mat::copyTo(class cv::debug_build_guard...
  • 使用工程时发现导入libcurl.lib报LNK2001错误,如下图所示: 解决思路: 一开始搜索重点放在出现LNK2001错误的原因,但是怎么搜索都找不到解决方法。 还是那句老话吧,可以尝试搜索提示错误的原来词汇,可能...
  • opencv编译时error LNK2019

    2016-10-18 10:34:28
    已启动生成: 项目: opencvstudy_codetest, 配置: Debug x64 ------ 1>MSVCRTD.lib(exe_main.obj) : error LNK2019: ...========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ========== 这是什问题怎么解决?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,103
精华内容 2,841
关键字:

编译成功lnk2001