Image

Imagerufous_spb wrote in Imageru_cpp

Category:

Камрады, нужна помощь советом. Я этот регбус решить не могу уже третий день.
Есть библиотеки на c++, есть тестовое приложение тоже на плюсах которое использует библиотеки. Приложение работает как часы.

Я сделал обёртку для python через swig, и эта обёртка не работает, поскольку где-то в недрах библиотеки просто теряется вызов одной функции из другой. Отследил я это повставляв printf'ы.

Демка на C++ собирается таким Makefile


APPNAME = cyberpay2
CC = g++
CFLAGS = -g3 -Ilibauth -Llibauth -Ilibipriv -Llibipriv -Ihttplite -Lhttplite -Ilib -Llib
CLIBS = -lauth -lm -lapp -lssl -lcrypto -lipriv -lhttp

all: cyberpay

...

cyberpay:
$(CC) $(CFLAGS) -o $(APPNAME) cyberpay.cpp $(CLIBS)


Обёртка под python таким

CC = g++
CFLAGS = -O6 -g3 -I. -I../libauth -L../libauth -I../libipriv -L../libipriv -I../httplite -L../httplite -I../lib -L../lib
CLIBS = -lauth -lm -lapp -lssl -lcrypto -lipriv -lhttp

all: swig linklib

swig:
swig -python -c++ libauth.i

linklib:
$(CC) -c libauth_wrap.cxx -I/usr/include/python2.4 $(CFLAGS)
$(CC) -shared -o _libauth.so $(CFLAGS) libauth_wrap.o $(CLIBS)




Всё это дело собиралось под gcc-4.2 и gcc-3.4, но результат один. Библиотека под питон не работает.

Кто нибудь сталкивался, с тем, что gcc теряет вызовы функций при сборке ? Не при сборке, не при выполнении ошибок нет. Функция просто не вызывается.

Если надо, то полностью исходники: http://iar.spb.ru/_media/projects/cyberpay.tar.gz (~300k)

Вызов проблемной функции в libipriv/libcheck.cpp (203)
Сама функция int getsecretkey(...) в libipriv/mgmt.c (433)