Добрый день. Я пытаюсь скомпилировать библиотеку для ее использования в Java. Но получить ошибку «ошибка LNK2019: неразрешенный внешний символ». В C++ я не очень понимаю, обратитесь за помощью. Begin файл CPPvC++ Ошибка JNI LNK2019: неразрешенный внешний символ
//ftrJavaScanAPI.cpp : Defines the entry point for the DLL application.
//
#ifdef _WINDOWS
#pragma warning (disable:4996)
#endif
#include "C:\ftrJavaScanAPI\ftrScanAPI.h"
#include "ftrJavaScanAPI.h"
#ifdef FTR_OS_UNIX
#include <string.h>
#endif
FTRHANDLE hDevice = NULL;
FTRSCAN_IMAGE_SIZE m_ImageSize;
FTR_DWORD m_dwErrCode = 0;
#ifdef _WINDOWS
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
#endif
JNIEXPORT jboolean JNICALL Java_com_Futronic_ScanApiHelper_Scanner_OpenDevice(JNIEnv *env, jobject obj)
{
hDevice = ftrScanOpenDevice();
if(hDevice == NULL)
return JNI_FALSE;
return JNI_TRUE;
}
Begin .h файл:
#include <C:\Program Files\Java\jdk1.7.0_05\include\jni.h>
/* Header for class com_Futronic_ScanApiHelper_Scanner */
#ifndef _Included_com_Futronic_ScanApiHelper_Scanner
#define _Included_com_Futronic_ScanApiHelper_Scanner
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_Futronic_ScanApiHelper_Scanner
* Method: OpenDevice
* Signature:()Z
*/
JNIEXPORT jboolean JNICALL Java_com_Futronic_ScanApiHelper_Scanner_OpenDevice
(JNIEnv *, jobject);
Ошибка на Debug
1> ftrJavaScanAPI.obj: ошибка LNK2019: неразрешенный внешний символ ftrScanOpenDevice ссылки в функции Java_com_Futronic_ScanApiHelper_Scanner_OpenDevice
Я понимаю, что необходимо добавить код для экспорта некоторых символов из DLL, чтобы экспортировать библиотеку, но не знаете, как это сделать.
Похоже, что функция 'ftrScanOpenDevice' не экспортируемого должным образом - вы можете увидеть [как сделать это здесь] (http://stackoverflow.com/questions/12573816/what-is-un-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix/12574423 # 12574423) –