簡體   English   中英

ld:找不到體系結構armv7的符號-使用庫?

[英]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);
}

也就是說,該類的成員函數的實現不僅僅是文件中的一個函數。

但是,我想強調一下,雖然這可能是確切問題的答案,但我認為這並不是為什么會出現問題的答案。

某種編輯器可能會進來並清除掉這個話題,但是無論如何我都會把它放進去...

鑒於:

  1. 作者確實在看過這段代碼之前看了一段時間(我正在和他聊天……因為看來至少有一個在我之前……在被發現之前)。

  2. 作者在評論中發布了該API,但問題出在哪兒仍然不明顯。

  3. 所有討論和研究問題的人(理智)都具有健全的頭腦,身體,並且至少具有基本的了解,即您實際上必須告訴編譯器函數是類函數的實現,而不僅僅是“函數” ”。

我認為這個問題的真正答案是:

  1. 不要在午夜之后嘗試編寫代碼...除非您天生夜行。

  2. 不要在午夜之后嘗試幫助人們調試代碼……除非您自然是夜行性的。

  3. 如果在看了1個多小時后問題仍未在解決方案中顯示出來,請走開並稍后再回來。

  4. 不要在午夜之后養活開發人員,否則他們可能會變得邪惡。

是的,我們都違反了這些規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM