我想運行一個簡單的位操作練習,以找到在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;
}
我剛剛複製並將修改後的代碼粘貼到vs2012,它編譯和鏈接罰款給我。你可以嘗試做一個乾淨或重建(或像我一樣從新的代碼開始)。你的代碼中不再有'highBitPostion',所以我不知道你仍然有這個錯誤。 PS如果你評論某人回答的答案,他們會收到通知;否則如果你只是更新你的問題,他們可能不知道。 – TooTone 2013-04-29 11:30:27
我也試過這個,它不能解決這個問題。真的很奇怪和令人沮喪。我認爲它與某個編譯器設置有關,但我真的知道從哪裏開始。我會看看我的教授能否幫助我看看它。謝謝您的幫助。下次我會記住這一點。 – 2013-04-29 13:26:15
你是如何解決這個問題的? – TooTone 2013-05-05 14:44:28