我目前在项目链接过程中遇到了问题,目前我们的项目是以"多个定义的形式表现出来的。错误,对于我的每一个函数。
我不知道为什么会出现这样的错误,因为我最近没有更改构建系统。我确实尝试清理项目(即删除obj和bin文件夹),但这没有解决问题。
请注意,我的大多数代码都是在汇编中生成的(我使用的汇编程序是NASM顺便说一句),这意味着应该没有问题,例如多次包含标题(我的项目中没有标题(可能应该有)一些用于汇编函数定义))。
我将当前的控制台输出上传到Pastebin,here。
请注意,控制台命令由我的IDE Code::Blocks
生成。
此外,尽管大多数错误都与街道的ASM版本有关,但这可能仅仅是因为它是按字母顺序排列的最后一个函数,因此它是第一个被链接的函数(并且因为最多有50个错误(我认为))。
另外,我不知道为什么指向Pastebin的链接必须附带代码,但我想这是我的街道功能的开始,如果你认为这是因为我有构建问题:
global @ASM_strset@8
segment .text align=16
%define string ecx ; char *, string to modify
%define character edx ; char, value to fill string with
%define result eax ; char *, string, now filled with character
%define backCharacter esi
%define loBackCharacter si
%define backString ebx
%define scasbAddr edi
%define scasbChar eax
%define scasbLimit ecx
%define stosbChar ax
%define stosbAddr edi
@ASM_strset@8:
mov backCharacter, character
mov backString, string
编辑:有人表示C::B
输出的命令已被破坏,但我并没有真正看到C::B
如何从项目文件中生成这样的破坏命令(看起来很正常)比如this。
编辑2:以下是C :: B生成命令的宏:
.cpp files : $compiler $options $includes -c $file -o $object
.asm files : nasm -f elf32 $file -o $object
请注意,我自己添加了汇编文件的宏,并且它们在过去几个月中一直在使用
答案 0 :(得分:1)
问题解决了:在第二十次关闭并重新打开项目之后,它完全没有任何理由(我尝试关闭并重新打开多次,以及完全关闭CodeBlocks甚至重新启动我的电脑,但直到现在它还没有工作)
编辑:控制台输出现在看起来像this,这可能看起来很正常。给NASM的目标文件名现在看起来像g ++那样,如下所示:
nasm -f elf32 "C:\Users\Administrator\OneDrive\Documents\ecole\Franc_sais\3e\Chapitre_1\SNES_ROMs\Programming\Projects\Assembly\Generic Samples\atoi.asm" -o obj\Release\atoi.o