问题标签 [language-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
670 浏览

c++ - 哪些类型的 C++ 函数可以放在 C 函数指针中?

我有一个 C 库,它使用函数指针结构进行回调。回调将从 C 代码中调用。

我可以将哪些类型的 C++ 函数安全地放置在要从 C 库调用的函数指针中?静态成员函数?完全指定的模板函数?非捕获 Lambda?

g++ 似乎让我可以使用以上所有内容,但我质疑将不同的调用约定和语言绑定用于 C 和 C++ 函数时的安全性。

0 投票
3 回答
124 浏览

c - 从lua调用c代码

我试图遵循这个:http ://www.troubleshooters.com/codecorn/lua/lua_lua_calls_c.htm

我尝试按照指南中的说明编译 c 代码:

gcc -Wall -shared -fPIC -o power.so -I/usr/include/lua5.1 -llua5.1 hellofunc.c

但是我得到了http://pastebin.com/KQvA0qFH,我认为这是您忘记包含 lib 或框架时遇到的错误,但我做了 -I/usr/include/lua5.1

如果重要的话,我正在运行 os x 并用 brew 安装了 lua

0 投票
1 回答
2958 浏览

c - 在 Elixir/Erlang 中运行 C 代码:端口还是 NIF?

我发现 Elixir 程序可以通过NIF(本机实现的函数)OS-level ports运行 C 代码。阅读了这些和类似的链接后,我不是百分百清楚何时使用一种或另一种方法(或完全是其他方法?),并且觉得为我自己和其他新手提供直接比较会很好. 谁能提供?

0 投票
0 回答
313 浏览

java - 如何编写可用于多种语言的库?

我正在尝试编写一个可用于多种编程语言的库,例如:

  • CLR 语言(C#、F#..)
  • JVM 语言(Java、Kotlin、Scala..)
  • 原生语言(C/C++、Rust、Objective-C、Swift..)
  • JavaScript/TypeScript

我知道实现这一点的基本方法是用 C/C++ 编写它并为每种语言维护我自己的绑定,或者为每种语言维护库的单独副本(就像 Reactive 扩展一样)。无论哪种方式,这对于n种语言都是O(n)工作。

是否有一种语言或工具可用于以一种语言编写库并为其他语言自动生成绑定?

0 投票
1 回答
864 浏览

python - pybind11 cmake example cannot find the main function

I git cloned pybind11's cmake exmaple. Then I built it with pip install ./cmake_example. My python file contains the following:

This works fine. Now I want to use pybind11's interpreter. I changed the CMakeLists.txt according to the instructions in the docs. Below are what I have now:

main.cpp

CMakeLists.txt

example.py

When I run the above python file, I get the following error:

Traceback (most recent call last): File "example.py", line 2, in cmake_example.main() AttributeError: module 'cmake_example' has no attribute 'main'

What am I doing wrong?

0 投票
2 回答
488 浏览

swift - 桥接头如何在 Xcode 中工作?

我很好奇 Xcode 是如何与 C 库和 Swift 4 一起工作的。

我通过创建桥接头添加了我的 C 库,之后我可以毫不费力地使用我的 C 函数。Swift 是基于 C 语言构建的吗?

0 投票
1 回答
52 浏览

dll - 仅用于修复不同语言之间的参数类型的函数接口/DLL 的术语?

我有几种情况需要让接口库有点“虚拟”,这意味着只需要让用语言 A 编写的应用程序调用用语言 B 编写的库,以便修复数据类型和其他小细节,无需添加功能。像这样的东西:

语言 A 中的应用程序 =>接口库=> 语言 B 中的库。

例如,我有一个案例,其中 A 是 Visual Basic,B 是 C#,以及用 Visual Basic 编写的“接口库”。另一种情况是A是LabView,B是C,“接口库”是用C写的。

我不记得是否有一个标准名称可以用英语调用这样的接口库,我的意思是“shell 库”或“dummy shell 库”等。任何建议,即使不是“标准”,也是受欢迎的.

0 投票
2 回答
327 浏览

c++ - 在 C++ 绑定中捕获 fortran 运行时错误和信号

我希望能够在 C++ 绑定中捕获终止的 Fortran 运行时错误。我有一个旧的 F90 代码可以绑定并期待各种错误,例如数字、IO 等。

我设法根据以下内容处理 STOP: Intercepting Fortran STOP from C++ and able to throw/catch exception for this case in the C++ code。

我在 https://www.sharcnet.ca/help/images/4/42/Fortran_Signal_Handling.pdf对“Fortran 中的信号处理”有了一些了解

但是,我无法解决这个问题,f90 fortran 的示例将非常有帮助。

例如,尝试在 fortran 子例程中打开一个不存在的文件会产生运行时错误,并且 C++ 代码会终止:

打开 (unit=13,FILE="fnameBAD",status="old",action="read",position="rewind")

Fortran 运行时错误:无法打开文件“fnameBAD”:没有这样的文件或目录

我希望能够使用信号捕获这个和其他运行时错误。

0 投票
0 回答
253 浏览

linker - Fortran 语言绑定错误:为什么不链接到 MPI 库?

我正在尝试为消息传递接口创建语言绑定,但编译器无法识别我对 C 函数的引用...

我目前在 linux 机器上使用 gfortran 作为我的编译器...我知道语言绑定有效,但是每当我尝试将它们链接到 mpi 库时,我都会收到此错误:

我目前使用的编译命令是:

(exampi 是我目前正在研究的标准)

正如我所说,当我使用简单的 hello_world 程序并手动编译所有文件时,此方法有效,但当我尝试将其链接到库时它会失败。谁能帮我?

这是我当前对 MPI_Init 的 Fortran 绑定:

我使用的 C 函数是微不足道的......它只是与 PMPI_Init() 接口......无论如何,库链接是主要问题......是的,我已经从 C++ 外部化了它。

这是我编写的简单测试程序:

我对 Fortran 不太熟悉......这是作为一个副项目给我的,但它很快就占据了我整个星期的时间,同时又笑又哭

谢谢!

0 投票
0 回答
55 浏览

python - 为自定义的基于 lua 的脚本语言编写包装器

我有一个程序,它是 Lua 的扩展,即它包括一堆额外的对象和函数。该程序现在可用于执行 lua 脚本,这些脚本利用标准 lua 之上的附加功能。此类脚本的通用示例如下所示(其中 NewObject+操作不是标准 lua)

现在,我想在 python 中使用这些对象和函数。因此,我想编写某种包装器,允许我将参数数据传递给我的(自定义)lua-runtime(并最终检索结果)并动态进行上述调用。我知道标准 lua 的 python 包装器存在,例如 lupa。但是,我不确定是否可以使用它,因为我不使用标准的 lua 解释器。此外,我希望它尽可能轻量(我需要交换的数据非常“标准”,即整数、浮点数、字符串、布尔值和此类类型的表,因此没有“更高”的对象),也许还有 LuPa已经做的比我需要的多得多..)。

不幸的是,我没有编写包装器或语言绑定的经验,而且我真的不知道如何开始。如果有人可以为我提供有关该主题的一些阅读资料或对目前的情况提出一些建议,我将很高兴。