как подружить __stdcall, python и msvs 5.0

Phoenix

Решил я написать неболшую прогу с окошком, на котором кнопочки и цифирки.
Циферки должны браться из БД mysql.
После нажатия на кнопочки должны вызываться некоторые функции из некоторой trans2quik.dll
Средства проганья
msvs 5.0 (другого нет, я далеко от цивилизации, этот-то диск отрыл с трудом)
немного инета (дорогой потомучто)
первое, что я начал делать, это открыл проект, написал половину проги(окошко и импорт из mysql)
при линковке с mysql.dll (или как она там называется) наткнулся на проблему, описанную здесь:
http://lists.mysql.com/win32/4573
"invalid file or disk full: cannot seek to 0x39f523e2"
правда в примере по ссылке, есть выход mysql 3.2, но мне это ничего не дало.
Ладно.
Решил переписать прогу на питоне.
Окошко есть, циферки из БД берутся и показываются. Супер. (теперь обратно с проект на vc++ не хочется, но это лишь пожелание)
Начинаем решать следующую задачу.
вызов функции из trans2quik.dll из написанной проги.
Оказалось, что функций он не видит.
пишем тестовую test.dll
функция вида
 
 long TRANS2QUIK_API __stdcall TRANS2QUIK_SEND_ASYNC_TRANSACTION 

прога на питоне не видит.
 
 long TRANS2QUIK_API TRANS2QUIK_SEND_ASYNC_TRANSACTION 

зато видит такие.
Погуглил - нифига по этому поводу не нашёл. Решил написать обёртку, тем более почти всё уже написано в test.dll
компилятор msvs при прилинковывании trans2quik.lib выдал
 
trans2quik.lib : fatal error LNK1106: invalid file or disk full: cannot seek to 0x47d65f44

Погуглил -ничего не нашёл, зато нашёл, что можно компилить mingw.
Скачал mingw, установил.
 

G:\igor\apps\devel\python\stockgate-p\test\fakedll>g++ -c -DTRANS2QUIK_EXPORTS fakedll.cpp
In file included from c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/windef.h:253,
     from c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/windows.h:48,
     from fakedll.cpp:1:
c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winnt.h:37:20: string.h: No such file or directory
In file included from c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/ole2.h:9,
     from c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/windows.h:114,
     from fakedll.cpp:1:
c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/objbase.h:12:20: stdlib.h: No such file or directory
In file included from c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/objbase.h:72,
     from c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/ole2.h:9,
     from c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/windows.h:114,
     from fakedll.cpp:1:
c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/unknwn.h:17: error: `size_t' was not declared in this scope
In file included from c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/ole2.h:9,
     from c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/windows.h:114,
     from fakedll.cpp:1:
c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/objbase.h: In function `BOOL IsEqualGUID(const GUID&, const GU
ID&)':
c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/objbase.h:77: error: `memcmp' was not declared in this scope
c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/objbase.h: In function `BOOL operator==(const GUID&, const GUI
D&)':
c:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/objbase.h:79: error: `memcmp' was not declared in this scope
G:\igor\apps\devel\python\stockgate-p\test\fakedll>
 

что-то не так. Погуглил. Где взять string.h и что для этого нужно установить не нашёл.
Сел писать этот пост.

SPARTAK3959

Лично я для написания оберток использую Fasm. Очень маленький и никаких непонятных проблем с компиляцией никогда не бывает. Минус - нужно знать ассемблер, понимать конвенции вызова и синтаксис Fasm. Так что надеюсь тебе удастся найти string.h.

Phoenix

Я думал о том, что плохо, что я асм. не знаю. да..
хотя это ещё одна дорожка обхода проблемы. Сейчас буду оценивать масштабы работ.

Phoenix

Я это читал, но как оказалось, нужно было ещё разок прочитать.
Там можно по разному подключать dll.
я подключал CDLL, а если подключить WinDLL, тогда он видит её.
спасибо!
Оставить комментарий
Имя или ник:
Комментарий: