ffi

    -1热度

    3回答

    我有下面的C代码: #include <stdio.h> struct Second { int a_number; }; struct Top { struct Second second; }; void lets_go(struct Top *top) { printf("The number is %d\n", top->second.a_nu

    1热度

    1回答

    我想尝试OCaml的FFI并结合一些C的功能类似于 ncurses的教程,但我选择了ecore_evas(EFL)代替: 这里的函数我想用: void ecore_main_loop_quit(void) void ecore_main_loop_begin(void) int ecore_evas_init(void) int ecore_evas_shutdown(void) Ecor

    1热度

    1回答

    所以我试图制作一个模块,动态检测您是否使用Lua或LuaJIT并创建一个表或cstruct。既然你不能添加metatables carrays,我有一个名为_m在我的结构数组。 以下是相关代码的一部分,我将链接到下面的Git回购。 local mat4 = {} local mat4_mt = {} -- Private constructor. local function new(m

    5热度

    1回答

    我发现有两个调用约定使用GHC's FFI:ccall和capi。文件没有关于这两个公约的很多信息。他们之间有什么区别,我应该什么时候使用每一个?一个比另一个快吗?

    0热度

    1回答

    我一直在关注如何创建共享库的这些说明(http://jonisalonen.com/2012/calling-c-from-java-is-easy/),但这些说明仅显示如何使用一个文件来完成。当我使用这个文件时,我创建了一个共享库,.so文件不能在同一个地方调用其他.c文件。我如何编译所有的c文件,以便我可以通过java访问合并的共享库?

    6热度

    2回答

    我想从一个C库返回int-arrays到一个OCaml程序。为了这样做,我想我只是把它们包装在一个Bigarray.Array1.t。下面是C-存根小演示: /* nativeintarray.c */ #include <stdio.h> #include <assert.h> #include <caml/memory.h> #include <caml/bigarray.h>

    2热度

    1回答

    我有一个共享库,我有一些功能。我想通过使用luajit获取他们的签名来访问他们。 我有一个libtest_c.so - >在/ usr/local/lib目录 卢阿 - >在/ usr/local/bin目录 要求( “test_c”) 标准输入:1:模块 'test_c' 未找到: no field package.preload['test_c'] no file './test_c.lua

    5热度

    1回答

    给定std::path::Path,将其转换为以空字符结尾的最直接方法是什么std::os::raw::c_char? (用于传递给具有路径的C函数)。 use std::ffi::CString; use std::os::raw::c_char; use std::os::raw::c_void; extern "C" { some_c_function(path: *con

    3热度

    1回答

    首先,我指定使用Windows 10 64位和Haskell Platform 8.0.1。 我尝试使用以下代码在Windows中使用Haskell的FFI。 import Control.Monad import Data.Char import Foreign.C getCh :: IO Char getCh = liftM (chr . fromEnum) c_getch for

    1热度

    2回答

    给定一个像exec这样的函数,如果给定未知数量的参数,我如何从lua ffi调用它。 的函数原型之中: int execv(const char *path, char *const argv[]); 即 function myexecv(...) local arg = { ... } local carg = ffi.new("char *const[?]", #arg