С программным обеспечением WPF, использующим .NET 9, и специальной DLL C/C++, отвечающей за создание виртуальной машины Java, с использованием JDK 17 с JNI версии 1.8 или 10. Я начал работать над C/C++ с исполняемой программой GLFW, ожидается исключение «0xC0000005: местоположение чтения нарушения прав доступа 0x00000000».
На C/C++ исполняемый файл, я игнорирую исключение, и программа продолжает работу в обычном режиме. Но при использовании атрибута LibraryImport для вызова моей пользовательской DLL или при вызове jvm.dll непосредственно из C# и попытке создать JVM с использованием маршалинга я не могу игнорировать ошибку, и приложение аварийно завершает работу.
На стороне C/C++ я уже пробовал использовать JVM в качестве библиотеки (jvm.lib) и с динамическим загрузчиком DLL (LoadLibrary("path\\to\\jvm.dll")). Оба закончились с одинаковыми результатами. Я что-то упускаю или есть обходной путь?
class KyJvm
{
public:
KY_SINGTN_DEF(KyJvm);
KyJvm() = default;
void Init(const String& scriptsJarsRelativePath, const String& scriptsJarFileName);
void Destroy();
inline JavaVM* GetJavaVirtualMachine() const { return m_JavaVirtualMachine; }
inline JNIEnv* GetEnvironment() const { return m_Environment; }
private:
JavaVM* m_JavaVirtualMachine = nullptr;
JNIEnv* m_Environment = nullptr;
};
void KyJvm::Init(const String& scriptsJarsRelativePath, const String& scriptsJarFileName)
{
std::ostringstream oss;
oss
Подробнее здесь: https://stackoverflow.com/questions/798 ... he-program