c++ - WinAPI 链接 C++

标签 c++ winapi

Win7 64 位 Qt5.4.1 -> MinGW 4.9.1 32位

下面是一个生成唯一 GUID 的简单 Qt 应用程序:

guid.pro

QT       += core
QT       -= gui

TARGET = qt-msync
CONFIG   += console
CONFIG   -= app_bundle

#INCLUDEPATH += "C:/Program Files/Microsoft SDKs/Windows/v7.1/Include"
LIBS += "C:/Program Files/Microsoft SDKs/Windows/v7.1/Lib/Rpcrt4.lib"

TEMPLATE = app
SOURCES += main.cpp

主要.cpp

#include <QCoreApplication>
#include <Rpc.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    GUID myGuid;
    CoCreateGuid(&myGuid);

    return a.exec();
}

如果qmake包含 INCLUDEPATH += "C:/Program Files/Microsoft SDKs/Windows/v7.1/Include" 我对 72 个错误感到震惊,所有这些错误看起来都像是与双下划线宏相关的错误。

就目前而言 \main.cpp:9: 错误:未定义对 _imp__CoCreateGuid@4 的引用 显然是链接器错误,但存在库文件 LIBS += "C:/Program Files/Microsoft SDKs/Windows/v7.1/Lib/Rpcrt4.lib"

还有其他人设法让 Rpc.h 合作在 64 机器上编译 32 目标吗?

我也尝试过使用 MSVC(Windows SDK 中包含的代码)编译更简单的 CMake C++ 代码,但它会抛出相同的错误。

最佳答案

#INCLUDEPATH += "C:/Program Files/Microsoft SDKs/Windows/v7.1/Include"
#LIBS += "C:/Program Files/Microsoft SDKs/Windows/v7.1/Lib/Rpcrt4.lib"

win32
{
    LIBS += -lole32
}

我能够仅使用 ole32.lib 准确构建您的代码。

关于c++ - WinAPI 链接 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29558514/

相关文章:

c++ - 扑克算法手评估器

c++ - 如何将 vector<string> 转换为 null 终止的 char **?

c++ - 理解带有循环引用的 Shared_ptr?

vba - 执行 URLDownloadToFile 函数返回 E_ACCESSDENIED 公司网络上的一般访问被拒绝错误 0x80070005

c++ - 硬币找零 DP 算法打印所有组合

c++ - Json卡盘事实解析

c++ - COM+ 发布方法未降为 0

c++ - 将 NTFS 文件夹的内容动态合并到虚拟文件夹中

python - 用 python 编写的 Windows 服务,未检测到关闭事件并正常停止

c++ - 线程本地单例