Похоже, GCBOpen()
скомпилировано __cdecl
, но в объявлении этого явно не указано. (Вот почему он связал OK, когда по умолчанию было __cdecl
, но разрывается, когда вы его изменили.) Как правило, для объявлений функций во внешних библиотеках рекомендуется указывать соглашение о вызовах, чтобы избежать проблем, подобных той, которую вы встретили.
Где-то у вас должно быть что-то вроде:
__declspec(dllimport)
extern int GCBOpen(int, int);
что было бы лучше как:
#define CALLCONV __cdecl
__declspec(dllimport)
extern int CALLCONV GCBOpen(int, int);