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

64位NASM代码与MinGW 32的链接错误

是由于不兼容的架构导致的。NASM(Netwide Assembler)是一种汇编语言,通常用于编写底层代码,而MinGW是一个开源的Windows开发工具集,用于支持C/C++编译和链接。

问题的根本在于64位NASM代码和32位MinGW之间的架构不匹配。64位NASM生成的目标文件使用的是64位指令集和寄存器,而32位MinGW是针对32位架构的。

为了解决这个链接错误,有以下几种方法:

  1. 使用相同架构的工具链:为了消除架构不匹配的问题,可以使用64位版本的MinGW或者32位版本的NASM。这样可以确保生成的目标文件和库文件具有相同的架构。可以从官方网站下载并安装对应版本的MinGW或NASM。
  2. 架构转换:如果无法使用相同架构的工具链,可以考虑将NASM代码转换为与MinGW兼容的架构。可以通过修改代码或使用其他工具进行架构转换,例如使用objconv等工具。
  3. 使用静态链接库:如果可能的话,可以将NASM代码编译为静态链接库(.lib文件),然后在MinGW中使用该库进行链接。这样可以避免架构不匹配的问题。

需要注意的是,关于64位NASM代码与MinGW 32的链接错误的具体解决方法会根据具体情况而有所不同。以上提供的是一些常见的解决思路,具体的操作和调试可能需要根据实际情况进行调整。

另外,关于NASM和MinGW的更多信息和使用方法,可以参考以下链接:

  • NASM官方网站:https://www.nasm.us/
  • MinGW官方网站:http://www.mingw.org/
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

conan入门(二十一):解决MinGW编译Openssl编译错误:cryptodsodso_win32.c

conan: 解决MinGW编译Openssl编译错误:crypto/dso/dso_win32.c 今天在用conan使用MinGW编译openssl/1.1.k,执行如下命令: $ conan install...openssl/1.1.1k@ -s compiler=gcc -s compiler.version=5.2 --build missing 在编译到crypto/dso/dso_win32.c时报了一大堆错误....c error #2979》,搞明白了原因 确实,在Windows下conan编译openssl时候,是需要msys2,见下图 也就是说msys2自带gcc会导致上面的编译错误,但Windows...mingw配置文件如下 mingw # 从默认配置文件(default)继承默认设置 include(default) [settings] # 修改编译器类型 compiler=gcc # 根据自己系统上安装...C++编译器 # openssl 为纯C项目,不需要C++编译器 #CXX=P:\MinGW\mingw64\bin\g++.exe 因为mingw 配置文件中定义了所有必须参数,所以命令行执行时就相对简单了

86120
  • FFmpeg和x264windows版本编译安装记录

    下载和安装YASM 这一步好像已经不必要,最新版代码中已经使用nasm来代替yasm。...C:\msys64>msys2_shell.cmd -mingw32 后 更新其他包 john@LIYIZHANG-PC MINGW64 ~ 分别安装32位版本和64位版本工具链 $ pacman -...所在目录后 启动mingw; 64位启动: c:\msys64>msys2_shell.cmd –mingw64 32启动: c:\msys64>msys2_shell.cmd –mingw32...5、编译安装x264,注意32位和64位编译不同: 如果是编译32位版本x264,请打开MSYS2 MinGW 32-bit,然后执行以下命令: c:\msys64>msys2_shell.cmd...中,必须区分引用32x264还是64位,否则会一直出现找不到libx264错误情况; 配置完成后,记得修改项目根目录下生成config.h文件,这个文件虽然说不建议编辑,但是要进行一次编辑

    1.2K20

    FFmpeg开发笔记(二)搭建Windows系统开发环境

    Windows安装包链接,比如msys2-x86_64-20230318.exe,浏览器就开始下载Windows版本安装文件。...“ -mingw64”,是为了让MinGW运行于64位模式,而非默认32位模式。...如果说MSYS2相当于Windows环境Linux模拟器,那么MinGW给MSYS2准备了32位和64位两套编译器,而我们目标是在Windows系统模拟64位Linux开发环境。...如果在打开MSYS2窗口时,msys2_shell.cmd命令后面没加“ -mingw64”,那么编译工具会默认装到mingw32\bin目录;只有在msys2_shell.cmd命令后面加上“ -mingw64...4、在MSYS2控制台执行以下命令查看FFmpeg版本信息: ffmpeg -version 发现控制台回显如下所示FFmpeg版本编译器版本信息,说明FFmpeg程序成功跑起来了。

    78310

    Win10编译SqlCipher步骤

    安装即可 nasm,汇编代码运行环境,官网下载安装即可 ActiveState ActiveTcl,需要用到tclsh工具 以上软件请预先安装,注意部分软件安装后需要手动添加环境变量 OpenSSL...perl Configure VC-WIN32 nmake nmake test 如果配置成功,该步骤会输出All tests Successful nmake install 正式安装命令,32位机器默认安装于.../lib目录下) 编译SqlCipher 将上一步生成两个库文件复制到SqlCipher主目录下 管理员权限运行C:\mingw\msys\1.0\msys.bat批处理文件,进入msys shell...命令环境 利用命令cd /d XXX切换到SqlCipher目录 修改sqlite3.c文件,在文件最开始部分添加以下代码: #define SQLITE_HAS_CODEC 1 #define SQLITE_ENABLE_RTREE...1 #define SQLITE_ENABLE_COLUMN_METADATA 1 #define SQLITE_TEMP_STORE 2 继续修改sqlite3.c文件,在文件最后添加以下代码

    4.1K30

    NASM语法

    想要以十六进制代码形式产生列表文件输出,并让代码显示在源代码左侧, 使用'-l'选项并给出列表文件名,比如: nasm -f coff myfile.asm -l myfile.lst 想要获取更多关于...就像其他Unix 编译器汇编器,NASM 在碰到错误以前是不输出任何信息,所 以除了出错信息你看不到任何其他信息。 2.1.1 '-o'选项:指定输出文件文件名。...(*) 'number-overflow'包含那些数值常数不符合32 位格式警告信息(比如,你很容易 打 了很多F,错误产生了'0x7fffffffffff')。...这样的话, 如果你想到链接进来其他模块中定义了一个符号叫'eax',你可以用'$eax'在 NASM 代码中引用它,以和寄存器符号区分开。...(*) 'number-overflow'包含那些数值常数不符合32 位格式警告信息(比如,你很容易 打 了很多F,错误产生了'0x7fffffffffff')。

    2K20

    mingw(gcc)编译libjpeg-turbo

    libjpeg-turbo是libjpeg接口兼容一个jpeg编/解码库,其主要特点就是利用SIMD指令(如X86架构MMX/SSE/SSE2,ARM架构NEON)来加速jpeg图像编/解码...安装NASM 因为libjpeg-turbo代码中用到了SIMD汇编指令,所以要编译源代码,就要先安装NASM,NASM全称The Netwide Assembler,是一款基于80x86和x86-...可以在sourceforge.net地址下载,也可以在其新独立官网nasm.us下载 我下是2.07版本(nasm-2.07-installer.exe),默认安装到C:\Program Files...再次打开电脑,在命令行下执行”set path”,显示修改环境变量已经生效 安装CMAKE 去cmake官网(https://cmake.org)下载一个最新版本,解压到本地文件夹,并像安装NASM...一样将bin文件夹设置到搜索路径(PATH环境变量)中 安装MinGW 关于windows下mingw安装网上有很教程,这里不多说了。

    1.1K20

    Win32编程之静态库编写使用.动态链接编写使用

    Win32编程之静态库编写使用.动态链接编写使用 一丶什么是静态库.什么是动态链接库.   ...每个人编写自己东西.最后组合.   动态链接库.也称为Dll. 为什么有了静态库还要有动态链接库. 原因是静态库优缺点.所以才出了动态链接库补充这个缺点. 缺点:   1.代码体积大....使用静态库程序编译出体积很大.在汇编层次中就是把静态库代码跟可执行文件相链接了.   2.重复代码多.一个静态库可以有很多人编写.有得函数会有多次编写. 动态链接库就是解决上面缺点....(确实不支持了) 所以不再累赘   新建项目 -> VC++ ->win32项目 -> 静态库....PS: 静态lib库代码使用时候会跟exe链接在一起. 在汇编程序中看 就是 Call 地址.  而 dll库则是 Call [地址] 间接调用. 真正用到时候才会把地址填写.

    73830

    xmake v2.3.7 发布, 新增 tinyc 和 emscripten 工具链支持

    通过这个安装包,我们编译开发 C 程序就可以完全摆脱臃肿 vs 开发环境(好几个 G),实现一键安装,开箱即用,对于我们平常刷刷 leetcode,写点 C 测试代码还是非常有用,没必要为此特定安装整个...NASM Assembler gcc GNU Compiler Collection mingw Minimalist GNU for Windows...autotools 不多说,反正我是对它交叉体验是深恶痛绝,每次交叉编译移植一个带有 autotools 项目的代码,都要折腾半天,经常要包各种错误,研究各种配置参数传递,不同平台配置还不同。...pcre2 包,然后编译链接它,哪怕这个 pcre2 包是通过 autotools/cmake 维护。...asm.js 和 WebAssembly #947: 通过 xmake g --network=private 配置设置私有网络模式,避免远程依赖包下载访问外网导致编译失败 改进 #907: 改进msvc链接器优化选项

    1.3K10

    Windows 编译 openssl-1.0.2p静态库 3264、debugrelease、MTMTd

    最近要用到 libeay32.lib、ssleay32.lib 两个静态库文件,因为以前项目中其中一个文件在 64 位编译时选择不是 MTd,而导致我引入该库以后提示运行时库和其他库声明冲突,其实实际原因就是生成选项不一样...Perl 安装时候记得勾选将执行程序添加到系统环境变量中。NASM 安装时没有选项,需要在完成后要将执行程序添加到系统环境变量中。如下图所示: ?...nasm debug VC-WIN32 >ms\ntdll.mak perl util\mk1mf.pl nasm BC-NT >ms\bcb.mak perl util\mkdef.pl 32 libeay...修改完成执行如下命令开始编译(如果想编译成 dll,则执行 nmake -f ms\ntdll.mak,编译前要修改 ms\ntdll.mak 将 CFLAG /MD 属性修改为 /MT,你调用项目匹配...): nmake -f ms\nt.mak 如果没有错误,几分钟后编译后文件就会生成于 D:\openssl-1.0.2p\out32 目录下。

    6K20

    Window 下 FFmpeg 和 LibX264 编译和配置

    如果你看到文章是安装 MSYS 1.0 版本,并且还需要额外安装 MinGW 软件,那么请退出来,重新找个 MSYS 2.0 版本文章吧,这样还能绕过 MinGW 单独下载太慢问题(别问为什么我知道...MinGW 和 MSVC 作用 在实际编译时候,我们也是用不上 MinGW ,看了一些文章用 MinGW 来编译,最后编译出来静态库是个 .a 形式。...一开始还没反应过来,Windows 下静态库不是 .lib 嘛,直接用 CMake 去链接 .a 库肯定不行啊。...转念一想,我要用 CLion 开发工程,编辑器直接用 MSVC 就好了,也用不上 gcc 来编译代码,干嘛用 MinGW 去编译个 .a 库呢,直接编译出 .lib 不好嘛。...nasm 然后,在该窗口中进入到 LibX264 源码目录下,把如下代码保存成 .sh 文件并执行: OPTIONS="--enable-shared" CC=cl .

    1.1K00

    Windows 编译 openssl-1.0.2p(libeay32.lib、ssleay32.lib)静态库 3264、debugrelease、MTMTd

    最近要用到 libeay32.lib、ssleay32.lib 两个静态库文件,因为以前项目中其中一个文件在 64 位编译时选择不是 MTd,而导致我引入该库以后提示运行时库和其他库声明冲突,其实实际原因就是生成选项不一样...Perl 安装时候记得勾选将执行程序添加到系统环境变量中。NASM 安装时没有选项,需要在完成后要将执行程序添加到系统环境变量中。...nasm VC-WIN32 >ms\ntdll.mak perl util\mk1mf.pl nasm BC-NT >ms\bcb.mak perl util\mkdef.pl 32 libeay...util\mk1mf.pl nasm debug VC-WIN32 >ms\nt.mak perl util\mk1mf.pl dll nasm debug VC-WIN32 >ms\ntdll.mak...CFLAG /MD 属性修改为 /MT,你调用项目匹配): nmake -f ms\nt.mak 如果没有错误,几分钟后编译后文件就会生成于 D:\openssl-1.0.2p\out32 目录下

    97930

    Windows 编译 openssl-1.0.2p(libeay32.lib、ssleay32.lib)静态库 3264、debugrelease、MTMTd

    最近要用到 libeay32.lib、ssleay32.lib 两个静态库文件,因为以前项目中其中一个文件在 64 位编译时选择不是 MTd,而导致我引入该库以后提示运行时库和其他库声明冲突,其实实际原因就是生成选项不一样...Perl 安装时候记得勾选将执行程序添加到系统环境变量中。NASM 安装时没有选项,需要在完成后要将执行程序添加到系统环境变量中。如下图所示: ?...nasm debug VC-WIN32 >ms\ntdll.mak perl util\mk1mf.pl nasm BC-NT >ms\bcb.mak perl util\mkdef.pl 32 libeay...修改完成执行如下命令开始编译(如果想编译成 dll,则执行 nmake -f ms\ntdll.mak,编译前要修改 ms\ntdll.mak 将 CFLAG /MD 属性修改为 /MT,你调用项目匹配...): nmake -f ms\nt.mak 如果没有错误,几分钟后编译后文件就会生成于 D:\openssl-1.0.2p\out32 目录下。

    12.8K12

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

    安装 文件复制示意图 (1) Visual Studio EGE安装包目录VS目录对应说明 EGE安装 [1] VS安装目录查找 [2] VSinclude目录和lib目录查找 [4] **lib...把时间花在EGE库使用学习上,而不是浪费在安装这件事情上。 注意带上错误信息截图, 并说明自己用什么编译器,按照哪个教程配置,配置到了哪一步。 配置出错,一般是文件放置目录不对,链接参数写错。...位 链接库文件(libgrahipcs.a), 复制粘贴到DevC++中对应位置 参考路径:D:\Dev-cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\32...如果你们编译参数里面没有,请在后面多添加一个 -lwinmm,否则使用MUSIC类时会出现 链接错误。...说明链接命令写错了,应该是 -lgraphics 如果配置和库已经对应,那么请检查一下是否将库文件放错了位置 未定义引用(undefined reference to xxx) 链接错误

    6.7K21

    【Android 内存优化】libjpeg-turbo 函数库交叉编译 ( libjpeg-turbo 函数库下载 | libjpeg-turbo 编译文档 | 环境准备 | NASM 安装 )

    NASM 源码 3、 编译安装 nasm-2.15 五、 编译 Android 平台使用 libjpeg-turbo 函数库参考 ( 官方提供 | 仅供参考 ) 1、ARMv7 (32-bit)...2、ARMv8 (64-bit) 3、x86 (32-bit) 4、x86-64 (64-bit) 一、 libjpeg-turbo 函数库下载解压 ---- 在上一篇博客 【Android 内存优化...ReadMe 信息 , 查找如何编译该函数库 ; 官方提示 , 让我们查看 BUILDING.md 文件 , 里面有详细编译文档 ; ( 可以点击该链接 , 直接跳转查看该文件 ) 三、 编译前环境准备...libjpeg-turbo 函数库参考 ( 官方提供 | 仅供参考 ) ---- NDK 要求 : Android NDK , 必须使用 v13b 以上版本 ; 下方配置来源 https://github.com...文件 ; 这里仅参考其中配置信息 ; 1、ARMv7 (32-bit) 交叉编译通用脚本 , 编译 ARMv7 (32-bit) CPU 架构函数库 ; # Set these variables

    1.4K20

    代码错误查找静态分析工具:助力高效开发利器

    引言在软件开发过程中,错误是不可避免。为了提高代码质量和开发效率,我们需要借助一些工具来帮助我们查找错误和进行静态分析。...ESLint:JavaScript 代码 Linter,可以检查语法错误、潜在 Bug、未定义变量等。...以下是一些流行 IDE 及其相关插件:PyCharm:Python 开发 IDE,具有强大代码错误检测和静态分析功能。...Visual Studio Code:轻量级编辑器,可通过安装插件进行代码错误检查和静态分析。结论代码错误查找和静态分析对于高效软件开发至关重要。...选择适合自己项目和编程语言工具,并结合 IDE 集成工具便利,可以更好地进行代码错误查找和静态分析。

    72230

    arm-gcc各版本区别

    同样可能这个可执行文件在ARM下面可能是关机。不同系统机器码含义是不一样。所以你在linux系统下面写代码要怎样才能在ARM系统上面跑呢。这就需要用到交叉编译。...嵌入式应用二进制接口指定了文件格式、数据类型、使用、堆积组织优化和在一个嵌入式软件中参数标准约定。开发者使用自己汇编语言也可以使用 EABI 作为兼容生成汇编语言接口。...产生了这个 4.对编译后文件hello.s进行汇编(第二步输出汇编代码hello.s翻译成符合一定格式机器代码) 使用命令:gcc -c -o hello.o hello.s ?...分别使用命令: gcc -c -o hello.o hello.c gcc -v -nostdlib -o hello hello.o 编译结果如下,提示错误: ?...2)静态链接:使用静态库进行链接,生成程序包含运行所需要全部库,可以直接运行,不过静态链接生成程序体积大。 例子: 分别使用动态库链接和静态库链接 ? 额,此时我暴躁了...不是我想要结果.

    3.4K20

    MinGW安装教程——著名CC++编译器GCCWindows版本

    打开这个地址后,我们看到就是 MinGW 官方网站首页面,在其中找到 Downloads 下载链接,单击它进入 MinGW 下载页面。...MinGW 安装管理器安装程序Chrome、Adobe Flash Player类似,是在线安装程序,必须联网才能正确安装。...K.使用 MinGW 进阶学习 上述只是简单编译源代码方法,适用于单个或少量源代码文件,如果是复杂大型程序,要用到 makefile 来组织源代码时,就需要 mingw32-make 命令了。...如果代码没有明显编译错误,运行时也没有逻辑错误,则在最终编译为可发布版程序时,我们还要考虑编译优化问题,以便生成程序文件拥有更小体积,和更高运行效率。...用于编译生成 .o 文件链接、汇编、生成静态库等。

    23.4K33
    领券