[.NET] VB在 VS2010 里传pointer给C DLL

楼主: sparion (say yes)   2018-10-04 22:26:00
各位大大好,小弟最近由于工作需要,且客户端是使用VB,
用C写了DLL给VB呼叫。
但是由于对VB不熟悉,发生了传入的pointer无法回传值,
因此做了一个实验。
用C做了一个小DLL,prototype如下:
__stdcall AddInteger(int32_t in, int32_t *Out);
动作很简单,就是输入一个in的值,同时传入一个整数的pointer,
把in的值加一后,写到pointer的数值里。
VB部分的程式码如下:
(加载DLL)
Public Declare Function AddInteger Lib "C:\Arithmatic.dll" (ByVal Inp As Long, ByRef Outp As Long) As Integer
程式部分:
Dim inp As Long
Dim outp As Long
inp = 5
AddInteger(inp, outp)
但是不管怎么传,outp都不是6回传。
请问有哪位高手可以指点一下,小弟是哪里写的有问题吗?
谢谢~!!
作者: chinoyan   2018-10-08 03:10:00
二个参数都改BYREF试试
作者: motherboard (妈的Ball)   2018-10-08 23:47:00
outp被重新宣告了 outp给个值试试
作者: mraaa (重新出发....)   2018-12-29 13:00:00
就我知道vb对int or long都是byval ,不管你是不是设byref.你的function都有return了,为什么还要用byref传output??

Links booklink

Contact Us: admin [ a t ] ucptt.com