不以"HelloWorld"场景开始时的链接器错误

wal*_*dev 2 c++ macos linker cocos2d-x

我刚刚开始使用Cocos2d-x c ++(版本3.4),我正在尝试为Mac构建一个简单的游戏,但是当我在AppDelegate.cpp中更改此行时

auto scene = HelloWorld::createScene();
Run Code Online (Sandbox Code Playgroud)

到我的自定义场景

auto scene = KeyboardScene::createScene();
Run Code Online (Sandbox Code Playgroud)

我收到此链接器错误:

Undefined symbols for architecture x86_64:
  "KeyboardScene::createScene()", referenced from:
      AppDelegate::applicationDidFinishLaunching() in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation).
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚我在这里缺少什么,感谢任何帮助,谢谢.

如果要查看自定义类源,请访问:

http://pastebin.com/F0NhSUWf

小智 6

这可能是两件事之一的结果.

第一.您根本没有定义KeyboardScene::createScene()符号.检查您实际上是否KeyboardScene:: createScene()在您的KeyboardScene.cpp文件中有定义.你KeyboardScene.cpp应该包含这样的代码:

KeyboardScene::createScene() {
    // function body here
}
Run Code Online (Sandbox Code Playgroud)

第二.您不编译KeyboardScene.cpp或不链接导致KeyboardScene.o可执行文件.检查KeyboardScene.cpp是否包含以构建应用程序目标集,如此处的示例所示.样本图片