gpt4 book ai didi

c - 在 Mono Linux 中将字符串从 native C 动态库 (.so) 发送到 VB .net

转载 作者:行者123 更新时间:2023-11-30 19:41:41 26 4
gpt4 key购买 nike

我想将一个字符串从非托管 C 代码发送到在运行 Linux 和 mono 的 Raspberry pi 上运行的托管 VB .Net。我通过从 c++ 调用动态 C 库来调试 netbeans 中的动态 C 库 (.so)。这就像一个魅力,但是当我从使用 Mono 在 Linux 中运行的 VB .Net 调用相同的函数时,它返回一个空字符串。

这是代码

C
void HelloCstr(/*OUT*/ char* hello)
{
string s = ("Hello World");
strcpy(hello, s.c_str());
}

_

C++
std::string ss;
HelloCstr((char*)ss.c_str()); // ss is filled with "Hello World"

_

VB .Net

<DllImport("libDllTest", CharSet:=CharSet.Ansi)>
Public Shared Sub HelloCstr(str As System.Text.StringBuilder)
End Sub


Public Shared Function HelloWorld() As String
Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder(200)
HelloCstr(sb) //After this call sb.Length == 0
Return sb.ToString() // this returns an empty string
End Function

我做错了什么?

最佳答案

经过几个小时的调试,我意识到我没有以正确的方式将 .so 库添加到 Linux 中。上面的代码有效。我希望这会对某人有所帮助..

关于c - 在 Mono Linux 中将字符串从 native C 动态库 (.so) 发送到 VB .net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33254386/

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