Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
写入传递给c+;的vb字符串时崩溃+;动态链接库 使用VisualStudio 2012,我需要将字符串传递给C++中的DLL。为此,在VB中,我通过s=newstring(“,100)创建了一个字符串,它创建了一个包含100个空格的字符串s。然后我传递这个字符串,该字符串将以少于100个字符的速度写入,并按预期与新字符串一起返回_C++_Vb.net - Fatal编程技术网

写入传递给c+;的vb字符串时崩溃+;动态链接库 使用VisualStudio 2012,我需要将字符串传递给C++中的DLL。为此,在VB中,我通过s=newstring(“,100)创建了一个字符串,它创建了一个包含100个空格的字符串s。然后我传递这个字符串,该字符串将以少于100个字符的速度写入,并按预期与新字符串一起返回

写入传递给c+;的vb字符串时崩溃+;动态链接库 使用VisualStudio 2012,我需要将字符串传递给C++中的DLL。为此,在VB中,我通过s=newstring(“,100)创建了一个字符串,它创建了一个包含100个空格的字符串s。然后我传递这个字符串,该字符串将以少于100个字符的速度写入,并按预期与新字符串一起返回,c++,vb.net,C++,Vb.net,在我使用的declare函数中 ...,s as string... 而不是: by reference s as string 但是,如果在传递此字符串之前,但按照上述方法创建后,我在VB中写入一个短字符串,例如s=“hi-fox”,然后将其传递到DLL中,并使用长度超过6个字符的字符串写入,则会崩溃 这个教训似乎是,在使用new string()函数创建一个空白字符串之后,您无法在其中写入较短的字符串。这就好像在VB中分配给字符串的内存不是创建字符串时使用的100个字符,而是s的内存大小

在我使用的declare函数中

...,s as string...
而不是:

by reference s as string
但是,如果在传递此字符串之前,但按照上述方法创建后,我在VB中写入一个短字符串,例如
s=“hi-fox”
,然后将其传递到DLL中,并使用长度超过6个字符的字符串写入,则会崩溃

这个教训似乎是,在使用
new string()
函数创建一个空白字符串之后,您无法在其中写入较短的字符串。这就好像在VB中分配给字符串的内存不是创建字符串时使用的100个字符,而是
s
的内存大小现在是较短字符串的大小

如果这是合理的行为,我想知道。它与C++的<代码>新< /C>函数有很大的不同,其中分配的内存的大小没有改变您写入的数组的大小。

谢谢您的任何响应和兴趣。

< P> > C++,VB字符串不是用字符串头存储的,也不包含终止零。当您将“hi-fox”指定给字符串时,100个字符的内存位置不再可用,取而代之的是6个字符的字符串。您可以使用字节数组代替这个参数的字符串,但是您应该注意2字节字符。< /P>请显示C++中的代码。您的问题与在一个足够大的缓冲区中写入较短字符串无关,可能是您的Visual Basic字符串看起来不像C++字符串,因此尝试将其视为一个问题是有问题的。如何整理数据/调用DLL?在
s=“hi-fox”
之后,
s
不再引用原始的100字符字符串。。。它指的是字符串
“hi-fox”
(6个字符)。您的问题是什么?对于paul,我认为缓冲区不再是100个字符,而是较短字符串的大小。我对vb存储字符串的内容或方式没有任何问题。我的问题是重新定义C++中使用的“新”的用法。我的观点是,当你给VB.NET字符串赋值时,它会有效地创建一个新的字符串,并且不保留像C或C++那样的未使用的字节。这就是它的工作原理。谢谢!我想这对我来说只是一个小小的惊喜,但是一旦你知道了,你就可以使用它了。再次感谢您的评论。大卫