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/