Я хотел бы статически связать и использовать в моей программе. Однако у меня нет исходного кода, поэтому мне нужно было бы написать файл заголовка самостоятельно.
Вот результат моего dumbin / экспорта
Тип файла: БИБЛИОТЕКА
Exports ordinal name ?about@@YGHXZ (int __stdcall about(void)) ?barcode@@YGHPAD00000000@Z (int __stdcall barcode(char *,char *,char *,char *,char *,char *,char *,char *,char *)) ?clearbuffer@@YGHXZ (int __stdcall clearbuffer(void)) ?closeport@@YGHXZ (int __stdcall closeport(void)) ?downloadpcx@@YGHPAD0@Z (int __stdcall downloadpcx(char *,char *)) ?formfeed@@YGHXZ (int __stdcall formfeed(void)) ?nobackfeed@@YGHXZ (int __stdcall nobackfeed(void)) ?openport@@YGHPAD@Z (int __stdcall openport(char *)) ?printerfont@@YGHPAD000000@Z (int __stdcall printerfont(char *,char *,char *,char *,char *,char *,char *)) ?printlabel@@YGHPAD0@Z (int __stdcall printlabel(char *,char *)) ?sendcommand@@YGHPAD@Z (int __stdcall sendcommand(char *)) ?setup@@YGHPAD000000@Z (int __stdcall setup(char *,char *,char *,char *,char *,char *,char *)) ?usbportqueryprinter@@YGHXZ (int __stdcall usbportqueryprinter(void)) ?usbportwrite@@YGHPAD@Z (int __stdcall usbportwrite(char *)) ?windowsfont@@YGHHHHHHHPAD0@Z (int __stdcall windowsfont(int,int,int,int,int,int,char *,char *)) ?windowsfontU@@YGHHHHHHHPAD0@Z (int __stdcall windowsfontU(int,int,int,int,int,int,char *,char *))
Я попытался написать файл заголовка, чтобы я мог использовать эти функции (показ одной):
int __stdcall openport(char *printername);
Я статически связал библиотеку с моей программой и попытался вызвать функцию openport
, но я получаю undefined reference to openport(char*)@4
,
Кто-нибудь знает, как написать это, чтобы это правильно связывалось? (Или это даже хорошая идея?)
редактировать
Я тоже побежал undname ?openport@@YGHPAD@Z
, который вернулся:
Отделка: — «? Openport @@ YGHPAD @ Z»
is: — «int __stdcall openport (char *)»
Что может означать, что я просто не могу правильно связать.
Задача ещё не решена.
Других решений пока нет …