""的多重定义链接错误

时间:2018-06-14 08:38:59

标签: c++ codeblocks nasm

我目前在项目链接过程中遇到了问题,目前我们的项目是以"多个定义的形式表现出来的。错误,对于我的每一个函数。

我不知道为什么会出现这样的错误,因为我最近没有更改构建系统。我确实尝试清理项目(即删除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

请注意,我自己添加了汇编文件的宏,并且它们在过去几个月中一直在使用

1 个答案:

答案 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