![](/img/trans.png)
[英]Importerror dlopen () symbol not found expected in flat namespace
[英]Symbol Not Found, expected in Flat Namespace ObjC++
我可能有一个简单的问题,但在编译过程中没有信息错误或警告,提醒我出错的地方。
我有一个Objective-C ++应用程序,其中包含C ++主文件和ObjC头文件。
它构建正常,但运行时,它会给出以下错误消息:
Dyld Error Message:
Symbol not found: _OBJC_CLASS_$_AppController
Referenced from: /Users/slate/Documents/osirixplugins/eqOsirix/build/Development/rcOsirix.app/Contents/MacOS/rcOsirix
Expected in: flat namespace
in /Users/slate/Documents/osirixplugins/eqOsirix/build/Development/rcOsirix.app/Contents/MacOS/rcOsirix
没有任何谷歌搜索导致解决方案,我敢肯定我错过了某个地方的编译或构建选项。
“AppController.h”包含在目标(已检查)中,而#import
import'd包含在ObjC类文件中。
任何帮助是极大的赞赏。
ObjC ++经常让我头疼。
谢谢,
-S!
显然缺少AppController类。 AppController类是在动态库的框架中定义的吗? 如果是这样,当您运行应用程序时,它是否知道在哪里可以找到库/框架?
顺便说一下,这是一个链接器问题。 头文件无关紧要。 这是您需要查看的.m或.mm文件。
不确定这是不是你的问题,但是我遇到了类似的问题,这个问题需要我整天调试。 我没有在C ++中编程大约15年,在尝试编写纯虚函数时,我使用了熟悉的语法“virtual void f();” - 哎呀 在C ++中它应该是“virtual void f()== 0;” mac OSX 10.9.2上最新版本的gcc很高兴地编译代码。
我认为这是一个完全合法的前向声明...但是,不确定C ++是否允许类跨越多个文件,所以看起来应该标记这个(因为CXX文件中没有提供任何实现。)无论如何,符号使其成为目标代码,并且链接器永远不会抱怨,因此您最终会得到缺少的引用。 希望这有助于某人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.