JNI 呼び出しに問題があります。.cpp
canon sdk を含むファイルがあります。私のJavaクラスCheck.java
には宣言があります:
private native void check();
私のCheck.cpp
ファイル:
#include "stdafx.h"
#include "iostream"
#include "EDSDK.h"
#include "Check.h"
using namespace std;
int check();
#define _CRT_SECURE_NO_WARNINGS
typedef UINT (CALLBACK* LPFNDLLFUNC1)(DWORD,UINT);
JNIEXPORT void JNICALL Java_Check_check (JNIEnv *, jobject){
check();
}
int check(){
HINSTANCE hDLL; // Handle to DLL
LPFNDLLFUNC1 lpfnDllFunc1; // Function pointer
hDLL = LoadLibrary("EDSDK.dll");
EdsError e = EdsInitializeSDK();
}
基本的に、私のCheck.cpp
ファイルはカメラを初期化するだけです。通話時:
cl -I "C:\jdk1.7\include" -I"C:\jdk1.7\include\win32" /EHsc -LD Check.cpp -FeCheck.dll
エラーがスローされます
Check.obj : エラー LNK2019: 未解決の外部シンボル _ imp _EdsInitializeSDK@0 が関数 "int __cdecl check(void)" で参照されました (?check@@YAHXZ)
同様に、カメラ関数のいずれかを呼び出すと、同様のエラーがスローされます。どうした?スタンドアロンファイルとしてCheck.cpp
うまく機能します。