错误LNK2019和LNK1120错误

问题描述:

我想运行一个简单的位操作练习,以找到在Visual Studio 2012的无符号数的高位位置,我不断收到这些错误:错误LNK2019和LNK1120错误

错误LNK2019:无法解析的外部符号_highBitPostion在函数_mainç引用 :\用户\道尔顿巴勃罗\桌面\学校\ C539 项目\功课4 C539 \ bitfiddling hw4.obj

错误LNK1120:1周无法解析的外部C:\用户\道尔顿 巴勃罗\桌面\学校\ C539项目\作业4 C539 \调试\作业4 C539.exe 1

我在过去遇到过这些错误,但总是最终在实验室中运行我的程序,因为他们的机器不给我这些问题。我在这个网站上搜索了其他类似的问题,以成功解决问题。

我已经尝试进入:

属性>配置道具。 >连接>系统>

然后改变子系统Console

我有我的代码更新到TooTones建议,可惜它没有解决这个问题。如果您看到我的代码导致这些错误,请让我知道。

这里是我的上下文代码:

#include <stdio.h> 
#include <stdlib.h> 


unsigned highBitPosition (unsigned n); 
unsigned long long highBitPosition64 (unsigned long long nn); 

int main(void){ 
//unsigned n = 0x0BABE000U; 

    printf("High Bit Postion 32: "); 
    printf("%u", highBitPosition(0x0BABE000U)); 

} 

unsigned highBitPosition (unsigned n){ 
unsigned pos; 
    for (pos = 31; pos > 0; pos--){ 

    if(((n >> pos) & 1U) == 1) 

    return pos; 
} 

return 0; } 

unsigned long long highBitPosition64 (unsigned long long nn){ 

unsigned hiOrder, lowOrder, bitPos; 

if (nn == 0) return 0; 

hiOrder = nn >>32; 
lowOrder = nn & 0x00000000FFFFFFFFULL; 

    if(highBitPosition(hiOrder) != 0){ 
     bitPos = highBitPosition(hiOrder) + 32; 
    }else 
     bitPos = highBitPosition(lowOrder); 

return bitPos; 
} 
+0

我刚刚复制并将修改后的代码粘贴到vs2012,它编译和链接罚款给我。你可以尝试做一个干净或重建(或像我一样从新的代码开始)。你的代码中不再有'highBitPostion',所以我不知道你仍然有这个错误。 PS如果你评论某人回答的答案,他们会收到通知;否则如果你只是更新你的问题,他们可能不知道。 – TooTone 2013-04-29 11:30:27

+0

我也试过这个,它不能解决这个问题。真的很奇怪和令人沮丧。我认为它与某个编译器设置有关,但我真的知道从哪里开始。我会看看我的教授能否帮助我看看它。谢谢您的帮助。下次我会记住这一点。 – 2013-04-29 13:26:15

+0

你是如何解决这个问题的? – TooTone 2013-05-05 14:44:28

你前进声明

unsigned highBitPostion (unsigned n); 

不符合您的定义

unsigned highBitPosition (unsigned n){ 

标记F或字符该声明需要与定义相匹配。所以你不能在小写/大写,拼写错误等方面有所不同。这里你在声明中有一个拼写错误。

因此,链接器正在寻找highBitPostion的定义,它无法找到,所以它说缺少highBitPostion。 (它是不够聪明,你确定定义的功能,highBitPosition,它应该使用的一个!)