c++ - 无法为 Windows Mobile 构建 C++ 项目

标签 c++ windows-mobile compact-framework linker

我正在尝试为 Windows Mobile(Windows Phone 7 之前的版本)构建示例项目。我在 VS 2008 中创建了一个 Win32 设备项目,并且安装了 Windows Mobile SDK。我用以下示例代码替换了主函数 stub ,但它无法构建并出现两个链接器错误。我猜这是某种配置错误或build设置错误,但我不知道去哪里查看。我构建的 C++ 项目很少,而且我不熟悉不同的选项。谁能提出任何可能有帮助的建议?

取自:Auto-launching CF apps with the HKLM\Init Registry Key

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 ​​error LNK2019:未解析的外部符号 WaitForAPIReady 在函数 wmain LaunchGate.obj LaunchGate 中引用
  • 错误 2 fatal error LNK1120:1 Unresolved external Windows Mobile 6 标准 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 与 cdecl,因此具有不同的名称修改规则。

关于c++ - 无法为 Windows Mobile 构建 C++ 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4865252/

相关文章:

C++,泄漏与否?可以做什么

c++ - 在另一个构造函数中调用构造函数(没有要调用的匹配函数......)c++

c# - 如何检测我的应用程序中的用户不活动(Windows Mobile,C#)

c# - Compact Framework 中的深度克隆

c# - Web 服务在第一次尝试时未连接

c# - 使用 NET Compact Framework 从 CAB 安装后重新启动

C++ 类前向声明

c++ - 使用 Boost assign 初始化具有变量值的类 JSON 映射

c++ - 如何在 Windows Mobile 的 MFC 对话框中更改字体/颜色?

windows-mobile - 如何将Windows Mobile PDA连接到Windows 10