gpt4 book ai didi

c++ - 从 C++ 调用 Swift 函数

转载 作者:行者123 更新时间:2023-12-03 17:17:46 24 4
gpt4 key购买 nike

我想知道是否可以从 C++ 调用 Swift 函数?如果是,如何?我知道我们可以从 Swift 调用 C++ 函数,但我还没有找到确切的答案。

最佳答案

虽然没有官方的方法可以直接从 C 调用 Swift 函数,但您可以设置一个可从 C 调用的函数指针。这是否对您有帮助取决于您的具体情况。例如,在 Apple 平台上,它对于与使用 C 回调(如 CFRunLoop 观察者)的 C API 集成非常有用。
粘贴在下面的是一个没有任何苹果风格的例子。
分享和享受

奎因“爱斯基摩人!”
Apple 开发者关系、开发者技术支持、核心操作系统/硬件
让 myEmail = "eskimo"+ "1"+ "@apple.com"

// main.swift

private func printGreeting(modifier: UnsafePointer<CChar>) {
print("Hello \(String(cString: modifier))World!")
}

var callbacks = SomeCLibCallbacks(
printGreeting: { (modifier) in
printGreeting(modifier: modifier)
}
)
SomeCLibSetup(&callbacks)

SomeCLibTest()

// SomeCLib.h

#ifndef SomeCLib_h
#define SomeCLib_h

struct SomeCLibCallbacks {
void (* _Nonnull printGreeting)(const char * _Nonnull modifier);
};
typedef struct SomeCLibCallbacks SomeCLibCallbacks;

extern void SomeCLibSetup(const SomeCLibCallbacks * _Nonnull callbacks);

extern void SomeCLibTest(void);

#endif

// SomeCLib.c

#include "SomeCLib.h"

static SomeCLibCallbacks sCallbacks;

extern void SomeCLibSetup(const SomeCLibCallbacks * callbacks) {
sCallbacks = *callbacks;
}

extern void SomeCLibTest(void) {
sCallbacks.printGreeting("Cruel ");
}
来源: https://forums.swift.org/t/best-way-to-call-a-swift-function-from-c/9829/2

关于c++ - 从 C++ 调用 Swift 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32853117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com