0

我已经使用 futronic sdk 成功地进行了生物特征打印并发布到节点服务器。我希望同样能够使用这个库在服务器中进行匹配,因为这是存储所有用户的生物特征打印的地方。我发现这个node-ffi库有助于定义我导出的等效 C 函数并将其编译为 .dll 文件。

现在这里的挑战是我试图移植这些ftrAnsiSDK函数,但无法将文件ftrScanAPI.dll和文件编译在一起。ftrAnsiSDK.dll它给出了这个错误:

...collect2.exe [Error] ld returned 5 exit status

当我编译和导出不依赖这两个库的函数时,我的代码工作正常,函数很容易导出并在节点服务器中使用。请问有人可以给我一个提示吗?

这是回购的链接。它由所使用的 lib 和 .dll 库组成。

对于服务器代码,这里是我想要实现的一个片段:

var libm = ffi.Library('lib/visystem', {
'HelloWorld': [ 'void', [] ],
'PrintErrorMessage': [ 'void', ['int'] ],
'CaprureImage': [ 'int', ['int','int','int'] ]});

HelloWordandPrintErrorMessages是我用作测试用例的方法,以确保在我继续执行主要函数之前导出函数(您可以从 repo 中的代码中看到函数定义..),这取决于futronic lin 和 sdk .

我目前使用的是 64 位操作系统,并且我在 32 位机器上安装了相同的程序,但它仍然没有编译和导出该功能。我使用的代码编辑器是 Dev++C。

任何人都可以帮助甚至给我提示如何实现这一目标吗?

4

1 回答 1

0

作为免责声明,我不熟悉 Dev-C++ IDE 或 MinGW 开发。

但是,根据您的libvisystem.def文件,粗略查看您的 github 存储库后,您的 DLL 导出的唯一函数似乎是:

  • 你好世界
  • 打印错误消息
  • 读取模板文件
  • 保存Bmp文件
  • 保存模板文件

查看libvisystem.a库头文件时也证实了这一点:

在此处输入图像描述

因此,您可能应该首先手动将dll.h中的其余导出函数添加到 def 文件,以与已经存在的函数类似的方式,看看是否有任何改变。


笔记:

我不确定__declspec(dllexport)指令是否被 Dev-C++ 编译器/链接器忽略,而是使用 def 文件。也许SO上的其他人有一个想法。

于 2016-11-25T13:58:17.833 回答