Jak używać funkcji C # w Javie przy użyciu biblioteki JNA
Spędziłem wiele godzin próbując użyć funkcji C # wewnątrz mojej aplikacji Java, ale nie miałem sukcesu ... Napisałem następującą bibliotekę w C #:
public class Converter
{
public Converter()
{
}
public bool ConvertHtmlToPdf(String directoryPath)
{
//DO SOMETHING
}
}
Ta dll wywołuje inną bibliotekę dll, aby wykonać pewne operacje, ale gdy ją skompiluję, mogę znaleźć biblioteki Dll w moim folderze Realse i wszystko wydaje się być w porządku, więc skompilowałem go przy użyciu opcji 32-bitowej, 64-bitowej i dowolnej CPU tylko po to, aby upewnić się, że nie mój problem.
Analizuję moje pliki dllDependency Walker w opcji 32-bitowej i dowolnej CPU mówi, że nie można znaleźć IESHIMS.DLL i pokazać ten komunikat:
Ostrzeżenie: nie znaleziono co najmniej jednego modułu zależności opóźnienia obciążenia. Ostrzeżenie: Przynajmniej jeden moduł ma nierozwiązany import z powodu braku funkcji eksportu w module zależnym od obciążenia opóźnienia.
Nie występuje w przypadku pliku 64-bitowego, nie mogę jednak znaleźć mojej funkcji ConvertHtmlToPdf.
Ponieważ nie wiem, czy jest to istotne, czy nie, moim drugim krokiem był kod Java.
Aby załadować moją bibliotekę:
System.setProperty("jna.library.path", "C:\\Program Files (x86)\\Facilit\\Target App\\lib");
i:
public interface IConversorLibrary extends Library {
IConversorLibrary INSTANCE = (IConversorLibrary) Native.loadLibrary("converter", IConversorLibrary.class);
void ConvertHtmlToPdf(String directoryPath);
}
(Wydaje się, że lib jest ładowany pomyślnie, ponieważ jeśli spróbuję usunąć plik DLL z uruchomioną aplikacją, mówi, że nie można go usunąć, ponieważ jest używany) i wreszcie:
IConversorLibrary.INSTANCE.ConvertHtmlToPdf(directoryPath);
Ale rezultat nie jest tak naprawdę, jak sobie życzę:
java.lang.UnsatisfiedLinkError: Error looking up function 'ConvertHtmlToPdf': Could not find the specified procedure.
Nie wiem, co robię źle, próbowałem wielu samouczków i wielu rzeczy, ale wszystko wydaje się działać, każda pomoc jest naprawdę doceniana.