ercan 发表于 2024-5-28 05:45:08

SByte*/Byte* 和 SByte**/Byte** 转换说明

如果您对 NativeAot 或 Gtk3/Gtk4 Wrapper 使用 AppWithPlugin 来处理所有内容,则说明委托函数指针 ( delegate* ) 的结构字符串不可用。



我看到 ClangSharpPInvokeGenerator 和类 UnmanagedCallerOnlyAttribute 存在问题,它们无法将结构字符串传递给 UnmanagementCallerOnly 的静态函数,或者您的应用程序尝试与加载共享库进行通信。



因为我有一个想法,所以我将 AppWithPlugin 写入 NativeAot,并且我希望 sbyte* 用于字符串,sbyte** 用于 string[] 在 C/C++ 中作为 const char* 和 char** 传递。
您可以在 https://github.com/DeafMan1983/AppWithPluginForNativeAot 查看我的存储库。


SDL2 包装器示例 (DeafMan1983.Interop.SDL2):

对于字符串到 sbyte*(来自字符串的 sbyte*):


sbyte* title = SBytePointerFromString("HelloSDL");

SDL_Window* window = SDL_CreateWindow(title, ... );

页: [1]
查看完整版本: SByte*/Byte* 和 SByte**/Byte** 转换说明