gpt4 book ai didi

c# - 将 C# 字典编码到 C++(非托管)

转载 作者:行者123 更新时间:2023-11-30 04:52:52 25 4
gpt4 key购买 nike

我目前正在开发 .NET Framework 4.7.2 应用程序。我需要使用非托管 C++ 库中的逻辑。 我不能使用 C++/CLI(托管 C++)

我试图找出如何将 C# 字典编码为非托管 C++:

Dictionary<string, float> myData

你知道吗,Dictionary<string, float> 的正确等价物是什么?在非托管 C++ 中?

谢谢!

最佳答案

如果您的字典很小,请在具有键值结构的连续缓冲区中进行序列化。

如果您的字典很大并且 C++ 只需要查询几个值,或者更改过于频繁,请使用 COM 互操作。由于 .NET 运行时中广泛的 COM 支持,这很容易做到。这里有一个例子,使用guidgen为界面生成GUID。

// C# side: wrap your Dictionary<string, float> into a class implementing this interface.
// lock() in the implementation if C++ retains the interface and calls it from other threads.
[Guid( "..." ), InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
interface iMyDictionary
{
void getValue( string key, out float value );
void setValue( string key, float value );
}
[DllImport("my.dll")]
extern static void useMyDictionary( iMyDictionary dict );

// C++ side of the interop.
__interface __declspec( uuid( "..." ) ) iMyDictionary: public IUnknown
{
HRESULT __stdcall getValue( const wchar_t *key, float& value );
HRESULT __stdcall setValue( const wchar_t *key, float value );
};
extern "C" __declspec( dllexport ) HRESULT __stdcall useMyDictionary( iMyDictionary* dict );

关于c# - 将 C# 字典编码到 C++(非托管),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54073106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com