c ++ — атрибуты типа игнорируются или неопределенные ссылки на ошибки phpExtension при компиляции файла php-cpp main.cpp

Я использую php-cpp для создания расширения для моих php-кодов, и когда я пытаюсь скомпилировать простую структуру файла main.cpp, я получаю некоторые странные ошибки.

это ошибки компиляции:

g++ -std=gnu++11 main.cpp
In file included from lib/phpcpp/phpcpp.h:39:0,
from main.cpp:122:
lib/phpcpp/type.h:32:1: warning: type attributes ignored after type is already defined [-Wattributes]
};
^
In file included from lib/phpcpp/phpcpp.h:60:0,
from main.cpp:122:
lib/phpcpp/classtype.h:31:1: warning: type attributes ignored after type is already defined [-Wattributes]
};
^
/tmp/cc0tI8mp.o: In function `get_module':
main.cpp:(.text+0x4c): undefined reference to `Php::Extension::Extension(char const*, char const*, int)'
main.cpp:(.text+0x65): undefined reference to `Php::Extension::~Extension()'
/tmp/cc0tI8mp.o: In function `Php::Extension::operator void*()':
main.cpp:(.text._ZN3Php9ExtensioncvPvEv[_ZN3Php9ExtensioncvPvEv]+0x14): undefined reference to `Php::Extension::module()'
collect2: error: ld returned 1 exit status

что такое /tmp/cctI8mp.o ??? или другие? и упомянутый cctI8mp.o меняется на другое имя каждый раз, когда я компилирую

и это код, который я пытаюсь скомпилировать:

#include "lib/phpcpp/phpcpp.h"/**
*  tell the compiler that the get_module is a pure C function
*/
extern "C" {
int main(){}
PHPCPP_EXPORT void *get_module()
{
static Php::Extension bias("bias_framework_free", "0.9.3.20");
return bias;
}
}

предвзятость это название моего расширения.

1

Решение

Согласно официальная документация Вы должны связать свой двоичный файл с -lphpcpp, Пример Makefile содержит следующие строки:

COMPILER_FLAGS      =   -Wall -c -O2 -std=c++11 -fpic -o
LINKER_FLAGS        =   -shared
LINKER_DEPENDENCIES =   -lphpcpp

Таким образом, чтобы правильно построить расширение, компилятору / компоновщику нужно больше информации, чем вы передавали в своей команде.

Попробуйте скопировать и изменить образец Makefile, Обратите внимание, чтобы построить расширение с помощью Makefile ты должен бежать make команда (которая будет искать make-файлы в текущем каталоге по умолчанию).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]