gpt4 book ai didi

c# - 从 C# 调用 C++ 代码时出现 System.EntryPointNotFoundException

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

//------------------------------------ C#代码------ ------------------------------

[DllImport("MarshallStringsWin32.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
extern static void Test([MarshalAs(UnmanagedType.AnsiBStr)] out String str);

[DllImport("MarshallStringsWin32.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
extern static void FreeString([MarshalAs(UnmanagedType.AnsiBStr)] String str);

static void Main(string[] args)
{
String str;
Test(out str);
FreeString(str);
}

//------------------------------------ C++代码------ ------------------------------

void Test(__out BSTR* str)
{
const std::string stdStr = "The quick brown fox jumps over the lazy dog";
_bstr_t bstrStr = stdStr.c_str();
*str = bstrStr.copy();
}

void FreeString(BSTR str)
{
SysFreeString(str);
}

我在调用 Test() 时收到 System.EntryPointNotFoundException。有人会知道我做错了什么吗?这是编码字符串的正确方法吗?

最佳答案

也许你需要在头文件中添加c++代码的代码:

 extern "C" void __declspec(dllexport) FreeString(BSTR str);

extern "C" void __declspec(dllexport) Test(BSTR* str);

关于c# - 从 C# 调用 C++ 代码时出现 System.EntryPointNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18338389/

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