![](/img/trans.png)
[英]symbol(s) not found for architecture armv7 when importing cpp file from iOS Sample Project
[英]ld: symbol(s) not found for architecture armv7 - Using a library?
鑒於以下代碼段,我正在使用Cocos2D-X:
CCSwipeGestureRecognizer * swipe = CCSwipeGestureRecognizer::create();
swipe->setTarget(this, callfuncO_selector(GameplayScene::didSwipe));
swipe->setDirection(kSwipeGestureRecognizerDirectionRight | kSwipeGestureRecognizerDirectionLeft);
swipe->setCancelsTouchesInView(true);
this->addChild(swipe);
我復制了所提供的CPP和H文件,並將它們添加到目標中。 但是,由於某種原因……此行:
swipe->setTarget(this, callfuncO_selector(GameplayScene::didSwipe));
給我問題。 我什至不知道它在問我什么-更不用說鏈接了什么。 標頭包含並編譯。
Undefined symbols for architecture armv7:
"GameplayScene::didSwipe(cocos2d::CCObject*)", referenced from:
GameplayScene::init() in GameplayScene.o
ld: symbol(s) not found for architecture armv7
注釋掉setTarget行使一切正常。
這里的簡單答案是該函數未正確定義。 它的定義為:
void didSwipe(CCObject* obj)
{
exit(0);
}
應該是:
void GameplayScene::didSwipe(CCObject* obj)
{
exit(0);
}
也就是說,該類的成員函數的實現不僅僅是文件中的一個函數。
但是,我想強調一下,雖然這可能是確切問題的答案,但我認為這並不是為什么會出現問題的答案。
某種編輯器可能會進來並清除掉這個話題,但是無論如何我都會把它放進去...
鑒於:
作者確實在看過這段代碼之前看了一段時間(我正在和他聊天……因為看來至少有一個在我之前……在被發現之前)。
作者在評論中發布了該API,但問題出在哪兒仍然不明顯。
所有討論和研究問題的人(理智)都具有健全的頭腦,身體,並且至少具有基本的了解,即您實際上必須告訴編譯器函數是類函數的實現,而不僅僅是“函數” ”。
我認為這個問題的真正答案是:
不要在午夜之后嘗試編寫代碼...除非您天生夜行。
不要在午夜之后嘗試幫助人們調試代碼……除非您自然是夜行性的。
如果在看了1個多小時后問題仍未在解決方案中顯示出來,請走開並稍后再回來。
不要在午夜之后養活開發人員,否則他們可能會變得邪惡。
是的,我們都違反了這些規則。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.