Java JNI JAWT错误未解析的外部符号__imp__JAWT_GetAWT @ 8

时间:2013-10-28 17:50:50

标签: java c++ jawt

好吧,我目前正在开发一个类似JOGL的项目,我想重新制作它,所以我可以用DirectX做同样的事情。我在开始时遇到了这个错误,现在已经研究了大约2天了。

这是完整的错误: 错误1错误LNK2019:未解析的外部符号_ imp _JAWT_GetAWT @ 8在函数“public:__thiscall JAWT_Info :: JAWT_Info(struct JNIEnv_ *,class _jobject *)”中引用(?? 0JAWT_Info @@ QAE @ PAUJNIEnv_ @@ PAV_jobject @@@ Z)C:\ Users \ Michael \ documents \ visual studio 2013 \ Projects \ BezerkGL \ BezerkGL \ redgl.obj BezerkGL

以下是我正在使用的标题:

#ifndef INFO_H
#define JAWT_INFO_H

// Helper class for accessing JAWT Information.
class JAWT_Info
{
private:
    JAWT awt;
    JAWT_DrawingSurface* ds;
    JAWT_DrawingSurfaceInfo* dsi;
    JAWT_Win32DrawingSurfaceInfo* dsi_win;

public:
    JAWT_Info(JNIEnv *env, jobject panel)
    {
        jboolean result;
        jint lock;

        // Get the AWT
        awt.version = JAWT_VERSION_1_3;
        result = JAWT_GetAWT(env, &awt);
        assert(result != JNI_FALSE);
        // Get the drawing surface
        ds = awt.GetDrawingSurface(env, panel);
        if (ds == NULL)
            return;
        // Lock the drawing surface
        lock = ds->Lock(ds);
        assert((lock & JAWT_LOCK_ERROR) == 0);

        // Get the drawing surface info
        dsi = ds->GetDrawingSurfaceInfo(ds);

        // Get the platform-specific drawing info
        dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo;
    }

    HWND getHWND()
    {
        if (dsi_win == NULL)
            return NULL;
        return dsi_win->hwnd;
    }

    HDC getHDC()
    {
        if (dsi_win == NULL)
            return NULL;
        return dsi_win->hdc;
    }

    virtual ~JAWT_Info()
    {
        if (ds != NULL)
        {
            // Free the drawing surface info
            ds->FreeDrawingSurfaceInfo(dsi);
            // Unlock the drawing surface
            ds->Unlock(ds);
            // Free the drawing surface
            awt.FreeDrawingSurface(ds);
        }
    }
};

#endifJAWT_

我非常确定这是所有必需的信息。

1 个答案:

答案 0 :(得分:0)

有点晚但可能对某人有用。 看起来应用程序的JNI部分是用不同的架构(可能是64位)与Java编译的,而不是C部分(可能是32位)。我曾经有这样的错误,这就是原因。我已将配置切换到Java 32位,这解决了问题。