小编dew*_*ker的帖子

在Objective-C代码中使用extern"C"的链接器错误

我正在尝试创建一些可以从iPhone应用程序中的Objective-C和C++代码调用的实用程序函数.我有第三方C++类,无法编译为ObjectiveC++(.mm).我有一个头文件声明我的函数,然后是.c文件定义它们.我已检查拼写错误三倍,但由于某种原因,我的链接器无法找到任何函数的定义.

这是C帮助函数的标题:

#ifndef FILE_LOADER_H
#define FILE_LOADER_H

#if __cplusplus
extern "C" {
#endif

void * loadDataFromFile(const char * szFilename, bool bDocument);
void * loadImageFromFile(const char * szFilename, bool bDocument);
void loadMeshFromFile(const char *szFilename, void* pMesh);

#if __cplusplus
}   // Extern C
#endif

#endif
Run Code Online (Sandbox Code Playgroud)

这是.c文件:

#include "FileLoader.h"
#include <objc/objc.h>
#include <objc/message.h>
#include <Foundation/Foundation.h>


void * loadDataFromFile(const char * szFilename, bool bDocument)
{
    Class loaderClass = NSClassFromString(@"Loader");
    void * pReturnVal = objc_msgSend(loaderClass,   NSSelectorFromString(@"loadDataFromFile:document"), szFilename, bDocument);
    return pReturnVal;
    //return [Loader loadDataFromFile:szFilename document:bDocument];
}
void …
Run Code Online (Sandbox Code Playgroud)

c c++ linker objective-c extern

4
推荐指数
1
解决办法
8136
查看次数

标签 统计

c ×1

c++ ×1

extern ×1

linker ×1

objective-c ×1