簡體   English   中英

符號未找到,預期在Flat Namespace ObjC ++中

[英]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.

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