作成したDLLでJNIを使用しようとすると、問題が発生します。
InfraredTest.dllというDLLを作成しました。このdllは、RedRat.dllと呼ばれる別のdllを参照しています。RedRat.dll関数を使用するInfraredTest.dll内の関数を使用しようとすると、JVMから致命的なエラーが発生します。
観察:1-私はすでにRedRat.dllリンクをテストし、InfraRedTest.exeを作成しましたが、同じコードで正常に動作します。2-私はすでにRedRat.dll呼び出しなしでJNIを使用してInfraRedTest.dllをテストしており、正常に動作します。
問題は、RedRat.dllが見つからないことです。最初のDLLと同じ場所に配置し、JVMのクラッシュも発生しました。
コードは次のとおりです。
#include "IRWrapper.h"
#include <iostream>
using namespace std;
using namespace RedRat;
using namespace RedRat::RedRat3;
using namespace RedRat::RedRat3::USB;
JNIEXPORT void JNICALL
Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf(" --- Calling IRWrapper.dll --- \n");
array<LocationInfo^>^ rr3Li = RedRat3USBImpl::FindRedRat3s();
if (rr3Li->Length == 0)
{
printf("No RedRats found.");
} else {
printf("Found: %d devices.\n",rr3Li->Length);
}
return;
}