Vince Ricosti
Vince Ricosti

Reputation: 519

Can we use C++/Cx inside a static lib (Metro Style)

I am trying to port a native sdk to windows RT and to help me I would like to implement missing functions to emulate registry access, so I have created a Static Library (File->New->Project...->Static Library (Metro Style apps) and I have declared the function like that :

// WinRT stuff
#include <windows.storage.h>
#include <wrl/client.h>
#include <wrl/wrappers/corewrappers.h>

using namespace Microsoft::WRL;
using namespace Microsoft::WRL::Wrappers;
using namespace ABI::Windows::Storage;
using namespace ABI::Windows::Foundation;

LSTATUS
APIENTRY
RegOpenKeyExW(
    _In_ HKEY hKey,
    _In_opt_ LPCWSTR lpSubKey,
    _In_opt_ DWORD ulOptions,
    _In_ REGSAM samDesired,
    _Out_ PHKEY phkResult
    )
{
    LSTATUS ret = ERROR_SUCCESS;

    if (hKey == NULL)
        return ERROR_INVALID_HANDLE;
    if (phkResult == NULL)
        return ERROR_INVALID_PARAMETER;



    ABI::Windows::Storage::ApplicationDataContainer^ localSettings =
              ApplicationData::Current->LocalSettings;

...
}

However when I try to compile I get this error :

1>c:\users\joe\documents\visual studio 2012\projects\lib1\lib1\oal.cpp(275): 
  error C3699: '^' : cannot use this indirection on type 
  'ABI::Windows::Storage::ApplicationDataContainer'

I have checked and Consume Windows Runtime Extension (/ZW) is enabled (it's by default) so I am wondering if it's possible to use C++/CX inside a static lib?

Upvotes: 1

Views: 1027

Answers (2)

Vince Ricosti
Vince Ricosti

Reputation: 519

Ok someone told me to add In Librarian->General->Additional Dependecies : %(AdditionalDependencies) and I have removed the ABI:: namespace. Now it works ;-)

Upvotes: 0

Larry Osterman
Larry Osterman

Reputation: 16142

If you're using the ABI prefix on your types, then you're referring to the low level C++ type. THe low level types are intended to be used with WRL and cannot use the C++/CX extensions like the ^ operator.

Use ComPtr localSettings instead.

Upvotes: 1

Related Questions