通过类库访问Unity IL2CPP项目中的Windows 10函数
Accessing Windows 10 functions from Unity IL2CPP project via a class library
我一直在尝试创建一个UWP类库,让我可以访问Windows 10s的本机功能,如Windows.Security.Authentication.OnlineId。我想从设备中获取用户名和ID,用于Unity UWP IL2CPP项目。我目前可以使用Unity为ios内置的社交类来做到这一点,谷歌已经编写了一些代码,允许它与同一类无缝工作,但适用于android的google Play Games。
我从github下载了一个示例(https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/WebAccountManagement)它演示了如何在UWP应用程序中调用相关的类和函数,并且运行良好,但示例似乎是从"Windows.Foundation.UniversalApiContract"类访问类。
我似乎找不到将其添加到基本UWP类库的方法,因此我可以调用所需的类,如Windows::Security::Credentials::WebAccountProvider。
我所能做的最好的事情就是在类库中创建一个基本函数,它返回一个小的硬编码字符串,只是为了测试这个概念是否可行。:-
extern "C" __declspec(dllexport) wchar_t* __stdcall GetMyString()
{
wchar_t* myString = L"Guuuper";
auto resultBufferLength = wcslen(myString) + 1;
wchar_t* result = static_cast<wchar_t*>(CoTaskMemAlloc(resultBufferLength * sizeof(wchar_t)));
wcscpy_s(result, resultBufferLength, myString);
return result;
}
我尝试做到这一点的整个过程可以在这里找到:-http://forum.unity3d.com/threads/returning-c-string-to-il2cpp-windows-store-project.395284/
我已经能够通过UWP构建成功地从unity内部调用此代码,但我的主要问题是如何添加适当的引用,或者如何创建这个类库来访问WebAccountProvider类?
如有任何帮助,将不胜感激
更新:我已经在MS团队自己的网站上询问了这一挑战,他们似乎正在制定解决方案。
很抱歉"回答"而不是"评论",但我仍然是一个新的贡献者。
我最初的第一直觉是怀疑你的问题不在Unity3D;它与C#和Unity3D内部的整个编程环境配合使用。C#不允许非托管内存分配。让C++库在C#中工作是一门完整的艺术,它被称为";编组;代码,因此整个行业都围绕着将插件从C++封送到Unity3D。
你没有得到字符串的原因是,你实际上是在发送和接收一个指向单个字符的指针
不幸的是,我为Unity整理C++代码的唯一经历是五年前,我对自己的解决方案有点生疏。我记得的是,最"技巧"但显而易见的解决方案是计算出可能传递的字符串的最大大小,并在除法的两边传递和接收预定义大小的字符串。
https://learn.microsoft.com/en-us/dotnet/framework/interop/default-marshaling-for-strings
如果这能让你朝着正确的方向前进,请告诉我们。
- 函数在Windows或Linux上运行时表现不同
- 是否有 Windows 用户空间函数来枚举连接的网络共享?
- Windows.h 输入在函数之外不起作用
- 几个 Nt 函数在 Windows 7 x32 上返回STATUS_WAIT_0
- 为什么我在 Windows API 中得到对 TextOut() 函数的未定义引用?
- 谁拥有作为指向 Windows API 函数的指针传递的值?
- Windows 是否可以调用静态库中的 WinMain 函数C++
- 如何在Windows Media Foundation中获取相机外部函数?
- 无法在clang Linux中分配非静态成员函数,但我可以在Visual Studio Windows中分配
- Windows 函数 "NetUserChangePassword" 在 Windows 10 下不再工作(在 Windows 7 下工作)
- Qt5 哈希函数在 Windows 7 和 Windows10 上不会返回相同的哈希
- Windows 函数"GetCursorInfo"返回成功,但光标的句柄为 NULL
- 通过Windows.h函数关闭打开文件
- 使用Windows函数SendMessage会导致与MSVC发生链接错误,但与MinGW不发生链接错误
- Qt中许多Windows函数的未解决的链接器错误
- 在c#中实现c++中的函数(MAKE_HRESULT - Windows函数)
- 如何将变量传递给windows.h函数text()
- #ifdef Q_OS_WIN32,但是在这个作用域中没有声明windows函数
- Exe在BackupRead Windows函数中崩溃
- 包括Boost网络库使Windows.h函数未定义