2009-06-15 12 views
0

ねえ、私はこのC++プログラムのコンパイルしようとしている人々:私はおそらく試してみましたC++プログラムをコンパイルする "LogonUser"というリンクエラー?

Validate.obj : error LNK2019: unresolved external symbol [email protected] 
referenced in function [email protected] 
Validate.dll : fatal error LNK1120: 1 unresolved externals 

:私は常に次のエラーを取得するしかし

cl -I"c:\Program files\Java\jdk1.5.0_07\include" 
    -I"C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include" 
    -I"c:\program files\java\jdk1.5.0_07\include\win32" 
    -LD D:\JNI\%filename%.cpp -D:\JNI\Fe%filename%.dll -link 
    -LIBPATH:"C:\Program Files\Microsoft Visual Studio 8\VC\lib" 
    -LIBPATH:"C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib" 

:このコマンドを使用して

#include <stdio.h> 
#include <string.h> 
#include <sys/stat.h> 
#include <stdlib.h> 
#include <Windows.h> 
#include "Validate.h"  

JNIEXPORT jstring JNICALL Java_Validate_takeInfo(JNIEnv *env, jobject obj, 
     jstring domain, jstring id, jstring idca, jstring password) 
{ 
    const char *nt_domain; 
    const char *nt_id; 
    const char *nt_idca; 
    const char *nt_password; 

    nt_domain = env->GetStringUTFChars(domain, NULL); 
    nt_id = env->GetStringUTFChars(id, NULL); 
    nt_idca= env->GetStringUTFChars(idca, NULL); 
    nt_password = env->GetStringUTFChars(password, NULL); 

     HANDLE hToken = 0; 
    char *otherString; 
    bool aut; 

     aut = LogonUser(nt_id, nt_domain, nt_password, LOGON32_LOGON_NETWORK, 
        LOGON32_PROVIDER_DEFAULT, &hToken); 
    if(aut) 
    { 
     otherString = "true"; 
    } 
    else 
    { 
     otherString = "false"; 
    } 
    jstring newString = env->NewStringUTF((const char*)otherString); 
    return newString; 
} 

int main() 
{ 
    return 0; 
} 

をLIBPATHスイッチを使って演奏をコンパイルする方法は数千種類あります。

-link -LIBPATH:"C:\Program Files\Microsoft Visual Studio 8\VC\lib";"C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib" 

などがあります。

[更新]私はlibにパスを中心に切り替え、私はこのエラーを取得します "\ VC \ libに" スイッチの前に "\ PlatformSDK \ libに" を入れた場合:それは今、他のを認識できないbecuase

LINK : fatal error LNK1104: cannot open file 'uuid.lib' 

libpath。何か案が? [/更新]

複数のlibpathを宣言するにはどうすればよいですか?これを引き起こす何か他に何かありますか?いつものように

、おかげでみんな

答えて

1

MSDNLogonUserがAdvapi32.libであることを述べています。問題は、あなたがAdvapi32.libを含めていないということです。 LIBPATHは、リンカーがライブラリを検索する場所に影響します。リンカーが検索するライブラリではなく、リンカーにAdvapi32.dllを検索するように指示しているところはありません。

Visual C++ 2008では、[プロジェクト]、[プロパティ]、[構成プロパティ]、[リンカ]、[追加の依存関係]の下にあるAdvapi32.libを含めることができます。 )他のバージョンについてはわかりません。

コマンドラインから、リンク先の追加ファイルとしてAdvapi32.libを一覧表示するだけで済みます。これを試してみてください:

Advapi32.libは私の "C:\ Program Files \ MicrosoftビジュアルStudio 8 \ VC \ PlatformSDK \ Libの" に位置しています
cl -I"c:\Program files\Java\jdk1.5.0_07\include" 
    -I"C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include" 
    -I"c:\program files\java\jdk1.5.0_07\include\win32" 
    -LD D:\JNI\%filename%.cpp -D:\JNI\Fe%filename%.dll -link 
    -LIBPATH:"C:\Program Files\Microsoft Visual Studio 8\VC\lib" 
    -LIBPATH:"C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib" 
    Advapi32.lib 
+0

フォルダウィッヒ私には、しようとしています。問題は複数のlibpathを宣言する必要があるという事実と関係していると思います。 –

+0

Advapi32をコマンドラインに組み込む方法を知っていますか? –

+0

チャームのように働いた、ありがとう、百万 –

関連する問題