xcode 错误:通过桥接头在Swift项目中使用旧Objective C库后,需要标识符或“(”

ddhy6vgd  于 2023-08-07  发布在  Swift
关注(0)|答案(2)|浏览(144)

我对Objective C的经验相当少,因为我开始使用Swift学习iOS开发,我需要使用一个较旧的ObjC库。
我的netsdk. h库(文件超过50k行)

#ifndef DHNETSDK_H
#define DHNETSDK_H

#if (defined(WIN32) || defined(_WIN32) || defined(_WIN64))

   ... 
#else    //non-windows

    #define CLIENT_NET_API extern "C"
    #define CALL_METHOD 
    #define CALLBACK
    ...

字符串
基本上在阅读了一些与此相关的问题后,我认为下一行的extern "C"有问题

...
#define CLIENT_NET_API extern "C"
...


由于这个原因,我在许多使用CLIENT_NET_API的行中得到错误,如

expected identifier or '('
Expanded from macro 'CLIENT_NET_API'


我的第一次尝试是将#define CLIENT_NET_API extern "C" Package 到

#ifdef __cplusplus
extern "C" {
#endif

#define CLIENT_NET_API 

#ifdef __cplusplus
}
#endif


但是我在使用CLIENT_NET_API的所有行上都得到错误"C does not support default arguments",例如

CLIENT_NET_API BOOL CALL_METHOD CLIENT_StartBackUpCase(LLONG lLoginID, const NET_IN_START_CASE_BACK_UP* pstInParam, NET_OUT_START_CASE_BACK_UP *pstOutParam, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT);

CLIENT_NET_API BOOL CALL_METHOD CLIENT_StopBackUpCase(LLONG lLoginID, const NET_IN_STOP_CASE_BACK_UP* pstInParam, NET_OUT_STOP_CASE_BACK_UP *pstOutParam, int nWaitTime = NET_INTERFACE_DEFAULT_TIMEOUT);


我认为它应该以其他方式 Package ,但我找不到在同一行中包含#defineextern关键字的示例

sqserrrh

sqserrrh1#

在这种情况下:

define CLIENT_NET_API extern“C”

假设CLIENT_NET_APIextern "C"
因此,在您的示例中,只需定义为empty existed preprocessor variable

#ifdef __cplusplus
extern "C" {
#endif

#define CLIENT_NET_API 

#ifdef __cplusplus
}
#endif

字符串

wljmcqd8

wljmcqd82#

我使用file.mm来#import“netsdk. h”而不是file. m。问题解决了

相关问题