我正在开发的多平台应用程序使用单个 C++ 类的不同子类,具体取决于其运行的平台。我可以在不更改超类的情况下将 OS X 子类设为 Objective-C++ (.mm) 文件吗?
编辑:更多细节
该项目现在包含此文件层次结构:
* VideoDriver.cpp - (superclass)
- VideoDriver_OSX.cpp - (subclass, contains Mac implementation)
- VideoDriver_win.cpp - (subclass, contains Windows implementation)
- VideoDriver_X11.cpp - (subclass, contains Linux implementation)
简而言之,我希望能够在 VideoDriver_OSX 实现中使用 Core Animation 和其他 Cocoa 库。将其更改为 Objective-C++ 文件 (VideoDriver_OSX.mm) 允许我使用这些 Cocoa 库,但现在尝试实例化 VideoDriver_OSX 对象的代码行(在不同的文件中)会在运行时导致此动态链接器错误:
dyld: lazy symbol binding failed: Symbol not found: __ZN15VideoDriver_OSXC1EP10gui_info_sP6CPFifoI17DecodedVideoFrameE
这似乎与 C++ 名称修饰有关,但我不知道如何解决它。我真的很感谢帮助,伙计们。