jjzjj

c++ - 通过 FFI block 从 Haskell 调用共享库,而从 C 程序链接时则不会

我正在尝试通过Haskell应用程序连接BaslerUSB3相机,但我遇到了一些困难。该相机带有一个C++库,使其相当简单。以下代码可用于获取相机源:extern"C"{voidbasler_init(){PylonAutoInitTermpylon;CInstantCameracamera(CTlFactory::GetInstance().CreateFirstDevice());camera.RegisterConfiguration((CConfigurationEventHandler*)NULL,RegistrationMode_ReplaceAll,Cleanup_Non

c++ - haskell FFI : Interfacing with simple C++?

就我目前所读的内容而言,将FFI与C++结合使用非常难以实现。最大的原因之一似乎是将C++对象转换为Haskell。我现在的问题是我没有任何C经验,但有几年C++经验,而且我更喜欢OOP。因此,自然而然地想从C++中受益。那么我可以编写专供HaskellFFI使用的C++程序来解决这些问题吗?C++可以在幕后做任何事情,但API会像C一样,即我不交换对象,没有重载的顶级函数等等。有什么需要注意的陷阱吗?(将我的项目与您可能熟悉的项目进行比较:考虑使用SciPy的Weave来加速Python代码。) 最佳答案 是的,如果您在C++代码

【LuaJIT & FFI】优雅的与C交互

文章目录前言LuaJITFFIffi库词汇ffi.*APIffi.cdefffi.typeofffi.newffi.fillffi.castffi.metatypecdata对象的垃圾回收小心内存泄漏前言LuaJIT和FFI是两个非常强大的工具,它们可以帮助开发人员在Lua中实现高性能的代码。LuaJITLuaJITisaJust-In-TimeCompilerfortheLuaprogramminglanguage。LuaJIT的运行时环境包括一个用手写汇编实现的Lua解释器和一个可以直接生成机器代码的JIT编译器。一开始的时候,Lua字节码总是被LuaJIT的解释器解释执行。LuaJIT的

PHP7.4 FFI 扩展安全问题

 在前面[极客大挑战2020]的Roamphp5-FighterFightsInvincibly题,遇到了FFI扩展调用函数进行rcetobypassdisable_function,之前没遇见过,刚好借此机会学一学目录PHP7.4FFI简介FFI配置信息FFI简单利用演示(1)FFI::cdef方法(2)FFI::new方法(3)FFI::load方法利用FFI:cdef绕过disabled_function进行rceCTF应用(1)[RCTF2019]Nextphp(FFI::cdef&Serialize接口&curl外带结果)(2)TCTF2020easyphp(FFI::load利用)

Flutter Dart FFI Pointer<Uint8>类型如何转成数组或String

前言继上一次发布的Flutter直接调用so动态库,或调用C/C++源文件内函数内容,最终我选择了第二种方式,直接把整个NativeC++的项目源代码放进了Flutter工程里编译(放在iOS的目录是因为它不支持自定义源码路径,Android是可以的)。这样的好处是Android和iOS两个平台都不需要分别再去写原生代码调用.so文件,也不用关注动态库平台,而且改动更方便。编译时Android侧会生成指定平台的.so文件(Gradle里配置),iOS侧会生成指定平台的.a文件(XCode里配置)背景Flutter的项目里需要调用C++进行APDU指令的操作和传输,APDU也就是一串16进制编码

c++ - 将图像从 C++ 传递给 Haskell 并取回一个字符串

我想使用图像作为参数从C++调用Haskell函数。它只是一个无符号字符数组,包含有关宽度和高度的信息(以像素为单位)。到目前为止,我已经有了这个工作代码。--Stuff.hsmoduleStuffwhereimportData.ListimportData.WordimportqualifiedData.Vector.UnboxedasVimportForeign.PtrimportForeign.StorableimportForeign.C.TypesimportForeign.C.StringimportForeign.Marshal.ArrayimportForeign.Ma

c++ - 如何强制 g++ 内联函数?

我最近在将HaskellFFI用于C/C++时遇到了C++内联函数的问题。即,g++并不真正内联声明为inline的函数,并为它们生成符号。最终,当ghci尝试加载调用内联函数的目标文件时,这会产生链接器错误:Loadingobject(static)solveeq.o...doneLoadingobject(dynamic)/usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.so...donefinallink...ghc:solveeq.o:unknownsymbol`_ZN5Eigen8internal19throw_std_bad_alloc

windows - 传递 CString 后跟 int 时 FFI 中的错误

我的Rust测试代码extern"C"{fntest_int_only(n:libc::c_int);fntest_int_and_str(s:CString,n:libc::c_int);}pubfntest1(){unsafe{test_int_only(0);test_int_only(1);test_int_only(2);test_int_only(4);test_int_only(-12);}}pubfntest2(){unsafe{test_int_and_str(CString::new("Foo").unwrap(),0);test_int_and_str(CStri

关于electron中使用ffi-napi窗口遍历的过程及问题

使用环境:electorn19、node16、ffi-napi、user32前言:这里先提一嘴,windowsapi也是有32位和64位的区别的,因为我是要快速完成项目,就没用C++写(不熟练),我想着直接用易语言写DLL,但易语言从来就只有32位,也就是编译出来的DLL也是32位的,导致我的node也必须要跟着切到32位才能使用易语言编译出来的DLL,因此就有了现在这个问题。问题开始:在原先的项目中,我使用的是64位的user32,在这里我们通常会使用EnumWindows这个api去遍历当前打开的所有窗口,代码如下constenumWindows=(callback)=>{user32.E

节点FFI回调来自C ++线程

我今天遇到了一个令人沮丧的问题。我正在与之合作node-ffi在我的电子应用程序中运行C++代码。总的来说,我有很好的经验,但是我今天开始从事多线程工作,并遇到了一些困难。这ffi我传递的回调是从线程调用的。但是,当我结束循环并尝试join循环线程到主线程,它完全冻结了电子应用程序。全部免责声明:我对C++非常陌生,并感谢您对我的代码进行改进的任何反馈,尤其是您认为我应该知道的任何危险信号。这是两个回购,证明了我遇到的错误:电子项目-https://github.com/jakedluhy/threading-testC++DLL-https://github.com/jakedluhy/th