草庐IT

c++ - 在 Haskell 中捕获 C++ FFI 异常失败

在Haskell中使用FFI到C++时,在cabalrepl中运行函数时我能够正确捕获异常,但是在使用cabalrun运行时,异常是没有被抓到。一个简单的cabal项目展示了这个问题如下:exception.cabal:name:exceptionversion:0.1.0.0build-type:Simplecabal-version:>=1.10executableexceptionmain-is:Main.hsc-sources:main.cxxbuild-depends:base>=4.7&&主.cxx:#include#includeextern"C"inths_except

c++ - 为什么 Rust 函数和 FFI C++ 函数以相反的顺序执行?

我试图将一个外部C++函数与我的Rust应用程序链接起来。此函数有效,但它的执行顺序与从Rust代码调用时的顺序不同。为什么会这样?这有记录吗?这是Rust应用程序的list:externcratelibc;uselibc::c_int;#[link(name="Project1",kind="static")]extern"C"{pubfnlib_fun(i:c_int)->c_int;}fnmain(){unsafe{lib_fun(2);}println!("fromRust:{}",2);}“项目1”库如下所示:#includeextern"C"{intlib_fun(intt

c++ - FFI/MemoryPointer 内存分配

我一定是遗漏了什么。我一直在阅读有关FFI的文章,但似乎无法就此得到明确的答案。假设我有以下C++函数:extern"C"{intReturnAnArrayOfStrings(constchar*arrayOfStrings[]){if(NULL==arrayOfStrings)returnsomeCharList.size();for(autoiter=someCharList.begin(),autoindex=0;iter!=someCharList.end();++iter,++index){char*allocatedHere=newchar[strlen(*iter)];/

c - Go 中的动态 FFI

是否可以动态加载外部C库(dll)并在Go中调用其函数?我知道有cgo用于静态绑定(bind)到C函数,但我对动态方式感兴趣。 最佳答案 简短的回答:不。(至少不使用gc,但是gccgo是gcc可链接的,所以它可能是可能的)中等答案:但是,您可以静态绑定(bind)libffi或libdl,然后使用it动态加载其他库。长答案:您可以使用gotoolchainsC编译器和汇编器在C和ASM中编写go包(例如,参见src/pkg/runtime)。因此,您可以使用C或ASM编写FFI作为go包。编辑:来自下面的评论(现在也是CW)或者,

ruby - 如何将 C 常量包装在 Ruby FFI 模块中?

我有一个(有点过高的)数量:externTCODLIB_APIconstTCOD_color_tTCOD_red;externTCODLIB_APIconstTCOD_color_tTCOD_flame;externTCODLIB_APIconstTCOD_color_tTCOD_orange;externTCODLIB_APIconstTCOD_color_tTCOD_amber;externTCODLIB_APIconstTCOD_color_tTCOD_yellow;externTCODLIB_APIconstTCOD_color_tTCOD_lime;我怎样才能很好地获取Rub

ruby - Rust Vec 到带有 FFI 段错误的 Ruby 数组

我试图返回一个可以从外部rust函数转换为Ruby数组的结构,但是当我尝试调用结构#to_a方法时,我得到了一个段错误。uselibc::size_t;#[repr(C)]pubstructArray{len:libc::size_t,data:*constlibc::c_void,}implArray{fnfrom_vec(mutvec:Vec)->Array{vec.shrink_to_fit();letarray=Array{data:vec.as_ptr()as*constlibc::c_void,len:vec.len()aslibc::size_t};mem::forget

rubysdl 与 ruby​​-sdl-ffi

谁能告诉我Rubygemrubysdl和ruby-sdl-ffi之间的区别,比如速度差异?如果是这样,您更喜欢哪个?我想知道我正在写的gem,Rubydraw(位于here)。提前致谢! 最佳答案 我是ruby​​-sdl-ffi的作者。这个问题今天引起了我的注意,所以我回答是为了让仍然好奇的人受益。主要区别是ruby​​-sdl-ffi是纯Ruby代码,通过FFI(外部函数接口(interface))访问SDL(和相关库),而ruby​​sdl是用C编写的扩展,链接到SDL(和相关库).每种方法都有利有弊。(显然,我觉得FFI是更

ruby - centos7 OPNFV arno镜像安装ffi(1.9.10)出错

正在安装“vagrant-centos7_fix”插件。这可能需要几分钟...Bundler,Vagrant用来安装插件的底层系统,报错。错误如下所示。这些错误通常是由错误配置的插件安装或transient网络引起问题。Bundler的错误是:安装ffi(1.9.10)时出错,Bundler无法继续。确保geminstallffi-v'1.9.10'在捆绑之前成功。Gem::RemoteFetcher::FetcherError:Error::ETIMEOUT:连接超时-connect(2)(https://rubygems.org/gems/ffi-1.9.10.gem)我尝试访问以

ruby - 如何解决 LoadError : cannot load such file -- ffi_c

我想知道如何解决在安装Ruby2.2.1Windows安装程序和Rubygem2.4后在控制台上执行require命令时看到的下一个错误.6。LoadError:cannotloadsuchfile--ffi_cfromC:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in`require'这是类似于DLL的东西吗? 最佳答案 如果您阅读requirementffi的文档,你可以看到:Youneedasanebuildingen

ruby - 在任何来源中都找不到 ffi

在OSX10.9.5上...gem文件source'https://rubygems.org'gem'rails','4.2.0'gem'sass-rails','5.0.4'gem'uglifier','2.7.2'gem'coffee-rails','4.1.0'gem'jquery-rails','4.0.5'gem'turbolinks','2.5.3'gem'jbuilder','2.3.1'gem'sdoc','0.4.1',group::docgem'mongoid','4.0.2'gem'mongoid-grid_fs','2.1.0'gem'watir-rails',