更新:添加了RoInitialize
roapi.h 中的内容
我正在编写一个纯 C++11 WinRT 库。我不使用 WRL 或 C++/CX(显然,如果我想要纯 C++11)。
我让我的代码在 MSVC 上编译和运行,但我想看看我是否可以让代码在 Mingw Gcc 上编译和运行。具体来说,我使用的是从 nuwen.net 获得的 GCC 4.7.2。
此时我需要的是一种调用 Windows API 函数RoInitialize
,和函数, RoUnitialize
,的方法。RoGetActivationFactory
HSTRING
WindowsCreateString
WindowsDuplicateString
WindowsDeleteString
我尝试在 G++ 中编译这个程序,但得到了错误
extern "C"{
__declspec(dllimport)int __stdcall RoInitialize(int);
}
int main(){
RoInitialize(1);
}
我试图编译但得到:
c:\Users\jrb\Desktop>g++ gccwinrt.cpp
C:\Users\jrb\AppData\Local\Temp\ccy7y1V9.o:gccwinrt.cpp:(.text+0x1e): undefined
reference to `_imp__RoInitialize@4'
collect2.exe: error: ld returned 1 exit status
如果有人能指出我如何声明这些函数以及我需要链接到哪些库的正确方向,我将不胜感激。即使它需要LoadLibrary
/GetProcAddress
我仍然可以接受
更新:这是RoInitialize
标题 roapi.h 中的内容
ROAPI
_Check_return_
HRESULT
WINAPI
RoInitialize(
_In_ RO_INIT_TYPE initType
);
ROAPI is just a define for __declspec(dllimport)
_Check_return_ is part of SAL (Secure Annotations Language?)
HRESULT maps to int32
WINAPI is a define for __stdcall
RO_INIT_TYPE is an enumeration so int should cover it