假设我在 C 中有我的事件驱动的 TCP 通信库。
在我的 Raku 应用程序中,我可以使用 NativeCall 调用 C 库中的函数。
my $server = create-server("127.0.0.1", 4000);
Run Code Online (Sandbox Code Playgroud)
现在,从我用C回调(say onAccept)我想调出在我的应用程序乐功能(说on-accept(connection)那里connection将是一个指向C结构)。
那么,我该怎么做:on-accept从我的 C 函数调用我的 Raku函数onAccept?
附:我尝试使用一个简单的标题“如何从 C 代码调用 Raku 代码”进行发布,但无论出于何种原因,stackoverflow.com 都不允许我这样做。正因为如此,我编造了这个花哨的标题。
我正在创建一个 32 位 DLL。我们必须明确告诉 CMake 配置 64 位构建。
cmake -G "Visual Studio 14 2015 Win64" ..
Run Code Online (Sandbox Code Playgroud)
无论如何,现在代码运行了,这不是我所要求的,因为回调仍然在 C 中。
我所要求的似乎不太可能。
我尝试使用 Haakon 建议的方法,但恐怕我不明白它是如何工作的。
我在 Windows 中,不幸的是,Raku 找不到我的 dll,即使我将它们放在 C:\Windows\System32 中。它找到“msvcrt”(C 运行时),但没有找到我的 dll。
dll 代码(Visual Studio 2015)。
#include <stdio.h>
#define EXPORTED __declspec(dllexport) …Run Code Online (Sandbox Code Playgroud) raku ×1