2011-02-01 8 views
2

私はWindows Mobile用のサンプルプロジェクトをビルドしようとしています。 VS 2008でWin32デバイスプロジェクトを作成しました.Windows Mobile SDKがインストールされています。メイン関数のスタブを次のサンプルコードに置き換えますが、2つのリンカーエラーでビルドできません。私はこれが何らかの設定エラーかビルド設定のエラーだと思っていますが、私はどこを見るかわかりません。私はC++のプロジェクトをほとんど作りませんでした。私はさまざまなオプションに精通していません。誰も助けてくれるものを提案することはできますか? Auto-launching CF apps with the HKLM\Init Registry KeyWindows Mobile用のC++プロジェクトを作成できません

extern "C" DWORD WaitForAPIReady(DWORD, DWORD); 
extern "C" BOOL IsAPIReady(DWORD hAPI); 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    // quick sanity check - HKLM\Init will send in our order number 
    if(argc == 0) return 0; 

    BOOL success = FALSE; 

    // wait for window manager - that should be enough for us 
    #if _WIN32_WCE > 0x500 
     success = (WaitForAPIReady(SH_WMGR, 5000) == WAIT_OBJECT_0); 
    #else 
     int i = 0; 
     while((! IsAPIReady(SH_WMGR)) && (i++ < 50)) 
     { 
      Sleep(100); 
     } 

     success = (i < 50); 
    #endif 

    if(success) 
    { 
     int launchCode = _ttoi(argv[1]); 
     SignalStarted(launchCode); 
    } 
    else 
    { 
     RETAILMSG(TRUE, (_T("CFInitGate timed out - SH_WMGR was not ready after 5 seconds\r\n"))); 
    } 

    return 0; 
} 

と私は見リンカエラー:

  • エラー1つのエラーLNK2019:未解決の外部シンボルWaitForAPIReady機能で参照LaunchGate.obj LaunchGate wmain
  • エラー2から撮影

    致命的なエラーLNK1120:1未解決の外部Windows Mobile 6標準SDK LaunchGate

WaitForAPIReadyの文書によると、私はkfuncs.hを含める必要があり、IsAPIReadyの文書によれば、私はwindev.hを使うべきです。私は#include "kfuncs.h"の文法エラーはありませんが、リンカーはまだ文句を言う。ときに私は#include "windev.h"私はファイルが見つかりません。

アイデア? ありがとう、 ブライアン

答えて

1

extern "C"として宣言しないでください。これ宣言:

extern WINAPI DWORD WaitForAPIReady(DWORD, DWORD); 
extern WINAPI BOOL IsAPIReady(DWORD hAPI); 

それは別の呼び出し規約です - cdecl規約対STDCALL、ルールをマングルので、別の名前。

0

dllのdumpbin/EXPORTSを実行して、どのようにマングルされているかを確認してください。奇妙なシンボルがたくさんある場合、それはC++で作成されたdllであり、sevaが答えたと宣言する必要があります。そうしないと、宣言する必要があります。

0

なぜあなたは#including kfuncs.hではなく関数を自分で宣言していますか?

+1

Kfuncs.hにはWM SDKが同梱されていません。プラットフォームビルダーでのみ使用できます。 –

関連する問題