Project"app"获取构建错误:"未定义的符号:run_mobile_session((">
Proj应用程序包括ObjC类库项目hub_lib。
Proj hub_lib具有带有main.cpp文件的文件夹;run_mobile_session(("在应用程序构建中未定义
- 我在没有错误的情况下构建了hub_lib项目,并用ctrl将其.h和.a从其Xcode文件夹窗格拖动到项目应用程序中的一个文件夹
- 我拖了.h&从应用程序中的文件夹到应用程序的文件夹窗格。(即进口(
- 我选择了目标作为我的配置iPhone
- 已生成应用程序,出现错误
我运行了nm并得到了这个。。。
DOUGs-MacBook-Pro:mobile_sys_hub_lib dbell$ nm libmobile_sys_hub_lib.a | grep run_mobile_session
U __Z18run_mobile_sessionv
DOUGs-MacBook-Pro:mobile_sys_hub_lib
行前面的U是"0";未定义";。nm认为您有一个符号参考,但没有实现。–Phillip Mills
Doug:main.cpp似乎是在类lib中编译的:我把垃圾"zzzzzz";在run_mobile_session((中,并获取构建错误。
代码。。。
------------------------------------------- ObjC app project...
//app.h ...........................
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
// ViewController.mm ....................
#import <UIKit/UIKit.h>
#import "hub_lib.h"
@interface ViewController ()
@end
@implementation ViewController
. . .
- (IBAction)start_session:(id)sender
{
hub_lib* _lib = [hub_lib new];
NSLog(@"app: %d", [ _lib start_session]);
}
@end
--------------------------------------- lib project...
// hub_lib.h ....................
#import <Foundation/Foundation.h>
@interface hub_lib : NSObject
@end
// hub_lib.mm ......................................
#import "hub_lib.h"
#import <UIKit/UIKit.h>
@implementation hub_lib
extern void run_mobile_session(void);
. . .
-(int)start_session
{
run_mobile_session();
return 0;
}
@end
--------------------------------------- C++ folder within lib project...
// main.cpp .....................
#include <stdio.h>
void run_mobile_session(void);
. . .
void run_mobile_session(void)
{
. . .
}
解决方案是将extern从hub_lib.mm移动到hub_lib.h,并将mod移动到C++:外部;C++";void run_mobile_session(void(;
感谢您的解决方案,gnasher729。