ObjC应用程序项目在引用导入应用程序的ObjC类库中的.cpp文件中的C函数时出现生成错误



Project"app"获取构建错误:"未定义的符号:run_mobile_session((">

Proj应用程序包括ObjC类库项目hub_lib。

Proj hub_lib具有带有main.cpp文件的文件夹;run_mobile_session(("在应用程序构建中未定义

  1. 我在没有错误的情况下构建了hub_lib项目,并用ctrl将其.h和.a从其Xcode文件夹窗格拖动到项目应用程序中的一个文件夹
  2. 我拖了.h&从应用程序中的文件夹到应用程序的文件夹窗格。(即进口(
  3. 我选择了目标作为我的配置iPhone
  4. 已生成应用程序,出现错误

我运行了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。

相关内容

  • 没有找到相关文章