簡體   English   中英

vc ++ JNI錯誤LNK2019:無法解析的外部符號

[英]vc++ JNI error LNK2019: unresolved external symbol

美好的一天。 我正在嘗試編譯一個在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中導出某些符號,以便導出庫,但不知道如何做

您要鏈接到DLL的文件是什么。 您的源文件不包含函數“ ftrScanOpenDevice”,請確保您將適當的.LIB文件添加到構建中。

在介紹DLL的復雜性之前。 使您可以編譯並運行以下簡單程序:

#include "C:\ftrJavaScanAPI\ftrScanAPI.h"

int main ()
{
   FTRHANDLE hDevice = ftrScanOpenDevice();

}

確保您可以編譯並生成EXE文件。 另外,您的可執行文件應該運行沒有錯誤。 它不應產生任何輸出。 如果遇到找不到DLL文件的錯誤,請確保您的路徑中或包含EXE文件的目錄中都有適當的DLL文件。 另外,請確保您具有與最終JNI程序相同的DLL。

還有一件事,您不應該對包含文件的絕對名稱進行硬編碼。 使用Visual Studio設置將“ FTRScanAPI”添加到您的包含和庫路徑。 因此,您的include指令應為

    #include "ftrScanAPI.h"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM