これは私が取り組んでいるプログラムの抜粋です。私はこの問題はshomehowクラス選手のこのメンバーによって引き起こされると思われる。(解決済み)「アーキテクチャx86_64の未定義シンボル」ビルドエラーの原因
std::vector<std::list<Bid> > lBidding
フォロービルドエラーのコードの結果:
g++ -o ./Debug/fudge @"/Users/andvik/MockUp/fudge/fudge.txt"-L.
Undefined symbols for architecture x86_64:
"Player::lBidding", referenced from:
Deal::bidding() in MockUp_main.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make[1]: *** [Debug/fudge] Error 1
make[1]: Leaving directory `/Users/andvik/MockUp/fudge'
make: *** [All] Error 2
make: Leaving directory `/Users/andvik/MockUp'
----------Build Ended----------
0 errors, 0 warnings
を、私はこのエラーは何かにを持っていることはかなり自信それは静的なベクトルと私は追加したコードの最後の部分だったので。私の研究は、似たようなエラーを引き起こす多くの異なる問題を示していますが、それらのどれも私が持っているのと同じ種類のコードに関係しているようには見えません。
コード:(。私はこれが最低限でなければなりません離れて適用されていないようだコードのいくつかのhudredラインをトリミングしました。)
#include <string>
#include <list>
#include <vector>
class Bid
{
public:
short iLevel;
short iSuit;
Bid():iLevel(0),iSuit(0){};
Bid(short l, short s):iLevel(l),iSuit(s){};
bool operator ==(const Bid Other) const
{
if(iLevel==Other.iLevel && iSuit==Other.iSuit)
{return 1;}
else{return 0;}
}
};
class Player
{
public:
short iPos;
static std::vector<std::list<Bid> > lBidding;
Player(short p):iPos(p) {};
bool operator ==(const Player Other) const
{
if(iPos == Other.iPos){return 1;}
else{return 0;
}
}
};
class Deal
{
public:
short iPass;
short iIteration;
Player pWest, pNorth, pEast, pSouth, pError;
Deal(): iPass(0), iIteration(0), pWest(0), pNorth(1), pEast(2), pSouth(3), pError(5){};
void bidding()
{
Player pTemp(5);
Bid bTemp, bPass;
while(iPass < 3)
{
pTemp = setPlayer();
if(pTemp == pError){break;}
if(Player::lBidding.at((pTemp.iPos+2)%4).empty()){}
else
{
if(Player::lBidding.at(pTemp.iPos).empty()){}
}
if(bTemp == bPass){++iPass;}
else{(*Player::lBidding.begin()).push_back(bTemp);}
};
}
Player setPlayer()
{
switch(iIteration % 4)
{
case 0: return pWest; break;
case 1: return pNorth; break;
case 2: return pEast; break;
case 3: return pSouth; break;
}
return pError;
}
};
int main(int argc, char **argv)
{
srand(time(0));
Deal deal;
deal.bidding();
printf("No debugging error.\n");
return 0;
}
だから、誰かが間違っているものを、私に言うpleseはでき私のコードと理由。 Btw、もしこれが誰かが手作りのブリッジシミュレータの一種であると思っているのであれば。
'/ Users/andvik/MockUp/fudge/fudge.txt'の中には何がありますか?おそらく 'g ++'の引数が間違った順序で入っているか、見つからないことがあります。 '-L.'を間違えた後に追加すると' @/Users/andvik/MockUp/fudge/fudge.txt'の前に '-L.'を置くべきです –
これはMacOSXでですか? (ユニバーサルバイナリを構築しているように見えますが、いくつかのシンボルが特定のアーキテクチャで定義されていないというリンカのエラーを説明しています) –
私がOS上で実行しているIDE X Lionはそのコンパイラの呼び出しを行いました。 fudge.txtの内容はこれだけです:./Debug/MockUp_main.o。 – user1269612