首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用mingw32获取“未定义的引用”,但使用mingw64没有链接器错误,为什么?

使用mingw32获取“未定义的引用”,但使用mingw64没有链接器错误的原因是因为mingw32和mingw64是两个不同的编译器版本,它们使用的是不同的运行时库和链接器。

mingw32是32位的编译器,而mingw64是64位的编译器。在编译过程中,如果使用了某个库或者函数,但是没有正确链接到对应的库文件,就会出现“未定义的引用”错误。这通常是由于编译器无法找到对应的库文件或者库文件的版本不匹配导致的。

mingw64相比于mingw32具有更好的兼容性和性能,因为64位系统可以更好地利用计算资源。所以在使用mingw64编译时,可能会自动链接到正确的库文件,从而避免了链接器错误。

为了解决使用mingw32获取“未定义的引用”的问题,可以尝试以下几个步骤:

  1. 确保使用的是正确版本的库文件,包括头文件和链接库文件。可以检查库文件的路径和版本是否与编译器匹配。
  2. 检查编译器的设置,确保编译器能够正确地搜索和链接库文件。可以通过设置编译器的环境变量或者命令行参数来指定库文件的路径。
  3. 如果仍然无法解决问题,可以尝试使用mingw64编译器来替代mingw32编译器。这样可能会自动解决链接器错误。

总之,使用mingw32获取“未定义的引用”,但使用mingw64没有链接器错误的原因是编译器版本和库文件的匹配问题。通过检查库文件的路径和版本,设置编译器的环境变量,或者使用mingw64编译器可以解决这个问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

​hostguest nativelangsys及uniform cui cross compile system

比如,就像host os,guest os有32,64的运行时藩离一样(colinux 32/64),编译器也要克服这些。...作为跨OS的编译器mingw,它里面的以前只有mingw32只能编译32位windows程序。...IDE平台,server core as guest负责运行就可以,但是现实的情况却是:host2guest大都没有支持,比如windows 2 linux的mingw64实现往往没有反过来丰富。...在这里,我们选择用二个简单的例子来说明,描述host2guest的mingw64 cross compile toolchain的使用,而其实,读者应该尝试组建自己的toolchain,且使用复杂的开源程序来测试...不过版本比较老,这也是为什么要自己编译的原因之一,自己编译的方法可以参照colinux的cross build脚本,也可以参照vityan gcc -v等,不过自己编译据说有好多坑。

64830
  • 重学C语言环境搭建

    以前很多C语言的内容都忘记了,所以记此笔记,从学C语言。 笔记使用Clion作为IDE,MinGW作为C编译器。支持window,linux,和Mac玩。...引用站外地址 Clion 官方下载地址 先下载下来 安装MSYS2 MSYS2 也是一个包管理软件,用来安装环境非常简单。推荐使用。...引用站外地址 MSYS2 官方下载地址 进入官网,下载安装包即可。 安装包一路下一步即可,我是安装在D盘的。 进入:D:\msys64,启动msys2.exe。...有mingw64和mingw32,64位系统用mingw64就好,按照下图配置好构建工具和编译器就行。 然后设置CMake,默认是Debug,如果没有,手动添加就是了。...这儿是可以设置多个编译器环境的,例如使用微软的MSVC,当然了,我们只安装了MinGW,用这个就好了。

    78720

    MinGW32和64位交叉编译环境的安装和使用「建议收藏」

    MinGW32和64位交叉编译环境的安装和使用 原文出处: CompileGraphics Magick, Boost, Botan and QT with MinGW64 under Windows...解压后得到: C:\DEVPACK\MinGW\mingw32\ C:\DEVPACK\MinGW\mingw64\ 另外添加3个目录如下,用于存放特定的工具链: C:\DEVPACK\MinGW\opt...\ /mingw32 C:\DEVPACK\MinGW\mingw64\ /mingw64 C:\DEVPACK\MinGW\opt\ /opt C:\DEVPACK\MinGW...项目属性里面,链接器->高级里面选择:MachineX64 (/MACHINE:X64)。常规->字符集->未设置。经过这样的配置,就可以编译32 / 64位windows程序了。...在我写作此文的过程中,参考了文章开头的链接,但是全部内容并不是简单的翻译,而是我亲自实践的总结。 谢谢!

    8.1K10

    ege安装教程(第二银河配置要求)

    把时间花在EGE库的使用学习上,而不是浪费在安装这件事情上。 注意带上错误信息截图, 并说明自己用的什么编译器,按照哪个教程配置,配置到了哪一步。 配置出错,一般是文件放置的目录不对,链接参数写错。...如果你们编译参数里面没有,请在后面多添加一个 -lwinmm,否则使用MUSIC类时会出现 链接错误。...说明链接命令写错了,应该是 -lgraphics 如果配置和库已经对应,那么请检查一下是否将库文件放错了位置 未定义引用(undefined reference to xxx) 链接错误,...,第一个即为默认编译器   对于安装了多个编译器的,可以在 Toolchain 里设置一下具体使用的编译器,原设置是使用默认编译器。...lib 使用lib/mingw64 中的库文件。

    6.7K21

    Dev-C++ FAQ

    使用过程中的踩坑记录。 什么是Dev-C++ 百度百科的dev词条描述 Dev-C++是一个Windows下的C和C++程序的集成开发环境。它使用MingW32/GCC编译器,遵循C/C++标准。...开发环境包括多页面窗口、工程编辑器以及调试器等,在工程编辑器中集合了编辑器、编译器、连接程序和执行程序,提供高亮度语法显示的,以减少编辑错误,还有完善的调试功能,能够适合初学者与编程高手的不同需求,是学习...它集合了功能强大的源码编辑器、MingW64/TDM-GCC编译器、GDB调试器和AStyle格式整理器等众多自由软件,适合于在教学中供C/C++语言初学者使用,也适合于非商业级普通开发者使用。...为什么选择Dev-C++ 正如百度百科中的描述,使用Dev-C++更多的是C/C++语言初学者。...链接库 进入参数 在链接下面的文本框中添加链接参数,例如:-luuid,多个库使用空格或换行分开。

    2.2K00

    omnet++ 中c++调用python的常见错误和解决

    1、错误和解决:错误1:undefined reference to '_imp__Py_Initialize':报错原因:没有使用 32 位的 python37.lib 或者是没有在编译的时候引用 python37...错误2:ld.exe: cannot find -lpython37.lib:报错原因:没有正确引用 python37.lib 或者没有 python37.lib 这个文件,应该直接使用 -lpython37...解决错误1和2:1、使用 32 位的 python。...)错误3:应用程序无法正常启动0xc000007b报错原因:没有使用 32 位的 python,(也可能环境变量中32位的被前面的覆盖了)错误4:找不到 ibgcc_s_dw2-1.dll:报错原因:...解决错误3和4:1、环境变量一定是32位的mingw下的mingw32下的bin,检查有没有被覆盖,我就是这样被坑了好久。

    56160

    vscode一键配置CC++多个C及CPP文件编译与tasks.json和launch.json原理

    具体配置 我这里的配置都没有用到VS相关,用的是跨平台的g++、gcc,在Windows上面就是安装MinGW,我用的是MinGW64(gcc version 8.1.0 x86_64)。...(2022-10-21更新) 如果你使用的是MSVC编译器,道理都是大同小异,MSVC我也配置过,都是可以的。...下面是我写的一个简单的例子,供大家参考(文章教程是gcc,这里仅供想使用MSVC编译器的小伙伴查看,gcc也可以参考部分内容),不使用这个的可以跳过。...VSCode-C/C++项目一键创建程序( 2022-10-07更,修复了配置小错误和界面提示错误) 因为只是个小工具,所以没有考虑任何美化,如果生成失败了,自主检查一下填写的路径是否正确,路径结尾是否有多余的空格等...1.主界面 可以自动获取你的编译器路径,如果不对可以手动更改。

    7.6K41

    QT软件开发:基于libVLC内核设计视频播放器

    这种架构为开发人员(VLC 开发人员和使用该库的开发人员)提供了极大的灵活性。它允许开发人员使用VLC功能创建范围广泛的多媒体应用程序。 播放每种媒体文件格式、每种编解码器和每种流媒体协议。...每个平台上的硬件和高效解码,高达 8K。 远程文件系统(SMB、FTP、SFTP、NFS...)和服务器(UPnP、DLNA)的网络浏览。 使用菜单导航播放音频 CD、DVD 和蓝光。...社区绑定 vlcj用于使用 Java 的桌面平台。 python-vlc用于使用 Python 的桌面平台。 vlc-rs使用 Rust 编程语言。 libvlc-go使用 Go 编程语言。...,如果没有默认路径,就使用当前C盘根目录 if(open_dir_path.isEmpty()) { open_dir_path...**tracks; //正常的视频获取的流的数量是2.

    3K70

    mingw(gcc)编译openjpeg

    https://blog.csdn.net/10km/article/details/50580841 openjpeg是C语言实现的开源jpeg2000图像格式的编码/解码器,github...但官方提供的二进制文件只提供了dll,如果想要将代码静态编译到项目中需要自己下载源代码编译。...-DBUILD_SHARED_LIBS=OFF 指定创建静态链接库.lib,默认是ON,生成dll openjpeg提供的CMakeList.txt不能同时创建静态库和动态库,所以你既想要静态库...当生成动态库的时候,还可以参加参数 -DCMAKE_GNUtoMS=ON 生成MSVC格式的导入库(import library .lib文件)。这样MSVC就可以直接使用GCC编译的动态库了。...64的,所以生成的目标代码也是64位的,如果要生成32位的目标代码,需要安装32位的编译器就是(mingw32)。

    2K20

    【C语言】解决C语言报错:Undefined Reference

    简介 Undefined Reference(未定义引用)是C语言编译过程中常见的错误之一,通常在链接阶段出现。当编译器无法找到函数或变量的定义时,会报告未定义引用错误。...什么是Undefined Reference Undefined Reference,即未定义引用,是指在编译过程中,链接器无法找到被引用的函数或变量的定义。...编译器在编译每个源文件时生成目标文件(.o文件),链接器负责将这些目标文件链接成最终的可执行文件。如果链接器找不到某个引用的符号的定义,就会产生未定义引用错误。...启用编译器警告选项:在编译时启用编译器的警告选项,可以提前发现未定义引用等问题。...0; } 分析与解决: 此例中,mylib_function函数在mylib库中定义,但编译时未链接该库,导致未定义引用错误。

    85320

    1000多个项目中的十大JavaScript错误以及如何避免

    这是在 Safari 中读取属性或调用未定义对象上的方法时发生的错误,这与 Chrome 的上述错误基本相同,只是 Safari 使用不同的错误消息。 ? 3....有趣的是,在 JavaScript 中,null 和 undefined 是两种不同的类型,这就是为什么会出现两个不同的错误消息。未定义通常是一个尚未分配的变量,而 null 则表示该值为空。...这是浏览器的一种安全措施,主要用于防止跨域传递数据的情况出现。 要获取真实的错误消息,需要执行以下操作: 1.   ...符合旧版浏览器的解决方案是以变量的方式简单地将引用保存在 this 中,然后通过闭包继承。...this.timer = setTimeout(function(){ self.clearBoard(); }, 0); }; 或者,在较新的浏览器中,使用 bind(  ) 方法传递引用

    8.4K40

    JavaScrip最容易犯的十大错误及其避免方法()

    ,在JavaScript中,null和undefined不一样,这就是为什么我们看到两个不同的错误消息。...这相当于Chrome中的错误“TypeError:’undefined’不是函数”。 是的,不同的浏览器可以针对相同的逻辑错误具有不同的错误消息。...ReferenceError: event is not defined 当您尝试访问未定义或超出当前范围的变量时,将引发此错误。 您可以在Chrome浏览器中轻松测试它。...如果使用strict编译器选项,一个好的静态类型检查系统(如Typescript)可以帮助您避免它们。如果预期类型但尚未定义,它可以警告您。...即使没有Typescript,在使用它们之前使用guard子句来检查对象是否未定义也是有帮助的。

    18910

    arm-gcc各版本区别

    \n”); return 0; } 使用 arm-linux-gnueabihf-gcc 编译,使用“-v”选项以获取更详细的信息: # arm-linux-gnueabihf-gcc -v mfloat.c...2)链接库文件(libc) 在hello.c中使用了printf函数,是在libc中实现的 ? 注意:-L 是指明链接的路径,-l指明链接的库文件。...分别使用命令: gcc -c -o hello.o hello.c gcc -v -nostdlib -o hello hello.o 编译的结果如下,提示错误: ?...4.静态连接和动态连接 解析: 1)动态链接:使用动态链接库进行链接库进行链接,生成的程序在执行的时候需要加载所需要的动态库才能运行,动态连接生成的程序体积体积较小,但是必须依赖所需的动态库,否则无法运行...2)静态链接:使用静态库进行链接,生成的程序包含运行所需要的全部库,可以直接运行,不过静态链接生成的程序体积大。 例子: 分别使用动态库链接和静态库链接 ? 额,此时我暴躁了...不是我想要的结果.

    3.4K20

    连接器工具错误lnk2019_2019年十大语文错误

    此错误消息后跟严重错误LNK1120。 若要修复错误 LNK1120,必须先修复所有 LNK2001 和 LNK2019 错误。 可能的原因 有多种方法可获取此错误。...所有这些都涉及到链接器无法解析的函数或变量的引用,或查找的定义。 编译器可以确定符号未声明的时间,但无法判断符号未定义的时间。 这是因为定义可能位于不同的源文件或库中。...如果某个符号被引用但从未定义,则链接器将生成一个无法解析的 :::no-loc(extern)::: al 符号错误。...:::no-loc(static):::无法以内联方式定义的类成员必须通过使用其完全限定名称在一个源文件中进行定义。 如果根本没有定义此方法,则链接器会生成 LNK2019。...但是,从 Visual Studio 2010 开始,Visual Studio 需要一个项目到项目的引用。 如果你的项目没有项目到项目的引用,则可能会收到此链接器错误。

    4.1K20

    Rust避坑现代C++悬垂指针

    指针所指向的内存已经被释放(如通过delete操作),但指针本身的值没有被修改,仍然指向已经释放的内存区域。...指针所指向的内存已经被分配给其他数据(如在堆上重新分配),但指针的值没有被更新,仍然指向旧的内存地址。指针本身所指向的数据,是局部变量所持有的数据,在局部变量超出其作用域后仍然被使用。...再次解引用(dereference)这样的指针会导致未定义行为。这是一种常见的C/C++编程错误,如下代码所示。...引用的有效性仍然受限于 smart_ptr 的生存期,这就是为什么在后面 smart_ptr 离开作用域后使用 reference 会导致编译错误。...这个错误发生在第8行,借用检查器检测到潜在的悬垂指针。这个输出体现了Rust的核心优势,即通过借用检查器在编译时捕获潜在的内存安全问题,而不是在运行时产生未定义行为。

    58161

    开篇入手-点亮小灯

    引言 因为对物联网之前是没有接触过的, 所以在网上调查了几天, 然后得到的信息是: ESP32https://www.espressif.com/zh-hans/products/socs/esp32...可以从官网找到然后链接过去 树莓派 上海乐鑫 两个板子的价格都在二三十左右 Windows 环境变量 右键计算机(或者随便打开一个文件夹, 右键左边此电脑) -> 属性 -> 高级系统设置 -> 环境变量...再重新烧录代码 ESP32 说明 由于需要用到make命令, 但是windows上没有这个命令, 所以只能使用msys2来模拟出一个环境运行 官网的安装教程https://docs.espressif.com...串口号, 点击左下角搜索, 然后输入设备管理器(不知道是哪一个, 把开发板拔了再插进去看哪个多出来就是哪个, 记住括号里面的) 设备管理器 把COM3填到Default serial port (按自己括号里时间的串口号...在这一步错误的多半都是串口号没写对, 参考上面的找到自己在Windowns的串口号再填写

    20810
    领券