Witam.
Piszac program do obslugi drukarki fiskalnej napotkalem na pewna przeszkode. Producent drukarki udostepnia biblioteke ServiceLibrary.dll, ja chcialbym stworzyc wlasna biblioteke (np. MyLibrary.dll) korzystajaca z funkcji pochodzacych z ServiceLibrary.
Prosze o podpowiedz dlaczego nie moge poprawnie zaladowac biblioteki ServiceLibrary wewnatrz biblioteki MyLibrary.dll?
0
0
Pewnie coś, źle robisz! Co tudno powiedzieć, wróżenie z fusów, napisałeś mam problem z biblioteką i nic więcej.
Najprostszą metodą jest dołączyć plik producenta statycznie do projektu (dodać plik ServiceLibrary.lib do projektu) i powinno zadziałać od kopa.
0
Wywoluje z Javy funkcje Java_c_DLL_func(JNIEnv*, jobject)
.
#include "c_DLL.h"
#include <stdio.h>
#include <windows.h>
typedef int (*FUNCTION) (int);
extern "C"
{
JNIEXPORT void JNICALL Java_c_DLL_func (JNIEnv *, jobject)
{
HINSTANCE h = LoadLibrary("ThermalServiceLibrary.dll");
if (h)
{
MessageBox(NULL, "zaladowano", "info", MB_OK);
}
}
}
Nie pojawia się messagebox - biblioteka nie laduje sie poprawnie.
A jak dodac statycznie dll do projektu?
0
Jest taka funkcja jak GetLastError, zwraca numer błędu. Wywołaj ją po LoadLibrary i zobacz w winerr.h co oznacza wartość, którą zwraca.
0
Ja bym sprawdził jaka nazwa odpowiada tej funkcji z ServiceLibrary. Różne kompilatory dodają dekoratory do nazw i wcale extern "C" w tym nie pomaga.
http://www.coding.comli.com/?p=71