WinAPI 链接 C++

WinAPI Linking c++

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

main.cpp

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

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

    GUID myGuid;
    CoCreateGuid(&myGuid);

    return a.exec();
}

如果qmake包含 包含路径 += "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.

就能完全构建您的代码