簡體   English   中英

無法為Windows Mobile構建C ++項目

[英]unable to build C++ project for windows mobile

我正在嘗試為Windows Mobile(Windows Phone 7之前的版本)構建示例項目。 我已經在VS 2008中創建了Win32設備項目,並且安裝了Windows Mobile SDK。 我將主函數存根替換為以下示例代碼,但由於兩個鏈接器錯誤而無法構建。 我猜這是某種配置錯誤或構建設置錯誤,但我不知道在哪里看。 我建立的C ++項目很少,我對不同的選項也不熟悉。 有人可以提出任何可能有用的建議嗎?

摘自: 使用HKLM \\ Init注冊表項自動啟動CF應用程序

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:函數wmain LaunchGate.obj LaunchGate中引用了未解析的外部符號WaitForAPIReady
  • 錯誤2致命錯誤LNK1120:1個未解決的外部Windows Mobile 6 Standard SDK LaunchGate

根據WaitForAPIReady文檔,我需要包括kfuncs.h ;根據IsAPIReady文檔,我應該使用windev.h 當我#include "kfuncs.h"我沒有語法錯誤,但是鏈接器仍然抱怨。 當我#include "windev.h"找不到文件。

有任何想法嗎? 謝謝,布萊恩

不要將它們聲明為extern "C" 因此聲明:

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

這是不同的調用約定-stdcall vs. cdecl,因此使用了不同的名稱處理規則。

對dll進行dumpbin / EXPORTS,看看它是如何變形的。 如果看到一堆奇怪的符號,則說明這是C ++創建的dll,應將其聲明為seva回答,否則應按聲明的方式進行聲明。

為什么要自己聲明函數而不是#include'ing kfuncs.h?

暫無
暫無

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

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