【发布时间】:2013-12-03 23:57:56
【问题描述】:
美好的一天。 我正在尝试编译一个库以在 Java 中使用它。但收到错误“错误 LNK2019:未解析的外部符号”。在c++中我不是很懂,请教。 开始cpp文件
//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;
}
开始 .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);
调试错误
1>ftrJavaScanAPI.obj:错误 LNK2019:函数 Java_com_Futronic_ScanApiHelper_Scanner_OpenDevice 中引用的未解析的外部符号 ftrScanOpenDevice
我知道有必要添加代码从DLL中导出一些符号以便导出库,但不知道该怎么做
【问题讨论】:
-
函数
ftrScanOpenDevice似乎没有正确导出 - 你可以看到 how to do so here
标签: java c++ visual-c++ java-native-interface