У меня проблемы с использованием сторонней библиотеки .so в PHP с новым FFI. Когда я запускаю этот маленький кусочек кода:
<?php
$ffi = FFI::cdef('typedef int (*NFE_Nome)(const char* sNome, int* esTamanho);', 'libacbrnfe64.so');
PHP выдает мне эту ошибку:
double free or corruption (out)
Aborted (core dumped)
Это проблема с самой библиотекой, моей конфигурацией PHP или что-то другое? Это сбивает с толку, потому что я могу нормально использовать эту же библиотеку с этим кодом C ++:
#include <iostream>
#include <dlfcn.h>
typedef int (*NFE_Nome)(const char* sNome, int* esTamanho);
#define BUFFER_LEN 256
int main() {
void *lib = dlopen("libacbrnfe64.so", RTLD_LAZY);
auto libMethod = (NFE_Nome) dlsym(lib, "NFE_Nome");
const std::string bufferNome(BUFFER_LEN, ' ');
int bufferNomeLength = BUFFER_LEN;
libMethod(bufferNome.c_str(), &bufferNomeLength);
std::cout << bufferNome << std::endl;
return 0;
}
Я знаю, что код PHP не выполняет функцию NFE_Nome, но я получаю ошибка перед попыткой вызова самой функции.