如何访问C++;功能? < >我通过我的代码> OpenCVWrPrper-调用C++函数。在这个函数中,我必须打开一个位于我的Xcode项目中的文件。是否可以在C++函数中指定期望的路径? 或者我必须通过Swift中的OpenCVWrapper传递一个文件

如何访问C++;功能? < >我通过我的代码> OpenCVWrPrper-调用C++函数。在这个函数中,我必须打开一个位于我的Xcode项目中的文件。是否可以在C++函数中指定期望的路径? 或者我必须通过Swift中的OpenCVWrapper传递一个文件,c++,ios,xcode,swift,opencv,C++,Ios,Xcode,Swift,Opencv,简而言之,它看起来像: func sample() { OpenCVWrapper.booProcess() } 在OpenCVWrapper.mm @implementation OpenCVWrapper : NSObject + (void)booProcess { boo(); } - (void)boo: { return boo(); } @end blink.cpp void boo() { cv::CascadeClassifier my

简而言之,它看起来像:

func sample() {
    OpenCVWrapper.booProcess()
}
OpenCVWrapper.mm

@implementation OpenCVWrapper : NSObject

+ (void)booProcess {
    boo();
}

- (void)boo:
{
    return boo();
}

@end
blink.cpp

void boo()
{
    cv::CascadeClassifier my_cascade;
    my_cascade.load("bar.xml");
}
已添加所有必要的包装


< P> > P >不幸的是,目前不可能从SWIFT调用C++代码。您必须在Objective-C中包装

OpenCVWrapper
,然后在Swift中调用它


<>请参阅更多信息。

不幸的是,目前不可能调用SWIFT的C++代码。您必须在Objective-C中包装
OpenCVWrapper
,然后在Swift中调用它


<>请参阅更多信息。

< P>我没有找到任何方法来获得C++函数中的文件路径。因此,最明显的解决方案是在Swift中获得路径的字符串表示

let path = NSBundle.mainBundle().pathForResource("bar", ofType:"xml")

然后将它通过包装器传递到C++函数

OpenCVWrapper.booProcess(path)
在OpenCVWrapper.mm中,您必须将
NSString
转换为
std::string

std::string *mypath = new std::string([path UTF8String]);

然后,可以通过包装器将此路径传递给C++函数。< /P>

+ (void)booProcess:(NSString*)path {
    std::string *mypath = new std::string([path UTF8String]);
    boo(*mypath);
}

在C++函数中,没有找到任何适当的方法来获取文件路径。因此,最明显的解决方案是在Swift中获得路径的字符串表示

let path = NSBundle.mainBundle().pathForResource("bar", ofType:"xml")

然后将它通过包装器传递到C++函数

OpenCVWrapper.booProcess(path)
在OpenCVWrapper.mm中,您必须将
NSString
转换为
std::string

std::string *mypath = new std::string([path UTF8String]);

然后,可以通过包装器将此路径传递给C++函数。< /P>

+ (void)booProcess:(NSString*)path {
    std::string *mypath = new std::string([path UTF8String]);
    boo(*mypath);
}

嗯??我已经为C++代码做了所有必要的包装。问题不是直接从SWIFT中使用C++。它是关于如何在C++函数内访问iOS项目中的文件的。看看这个:如果是,我只需要更改我的答案,链接到它并给出一个简短的概要。实际上,有一种检查的感觉,但是我不确定像项目一样在命令行中打开文件是否等同于iOS中的打开文件。我已经看过了。这和我的问题没什么共同点,嗯?我已经为C++代码做了所有必要的包装。问题不是直接从SWIFT中使用C++。它是关于如何在C++函数内访问iOS项目中的文件的。看看这个:如果是,我只需要更改我的答案,链接到它并给出一个简短的概要。实际上,有一种检查的感觉,但是我不确定像项目一样在命令行中打开文件是否等同于iOS中的打开文件。我已经看过了。这与我的问题毫无共同之处。