[.NET] VB在 VS2010 裏傳pointer給C DLL

看板Visual_Basic作者 (say yes)時間5年前 (2018/10/04 22:26), 編輯推噓2(202)
留言4則, 3人參與, 5年前最新討論串1/1
各位大大好,小弟最近由於工作需要,且客戶端是使用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回傳。 請問有哪位高手可以指點一下,小弟是哪裡寫的有問題嗎? 謝謝~!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.80.107 ※ 文章網址: https://www.ptt.cc/bbs/Visual_Basic/M.1538663164.A.763.html

10/08 03:10, 5年前 , 1F
二個參數都改BYREF試試
10/08 03:10, 1F

10/08 23:47, 5年前 , 2F
outp被重新宣告了 outp給個值試試
10/08 23:47, 2F

12/29 13:00, 5年前 , 3F
就我知道vb對int or long都是byval ,不管你是不是設byref
12/29 13:00, 3F

12/29 13:00, 5年前 , 4F
.你的function都有return了,為什麼還要用byref傳output??
12/29 13:00, 4F
文章代碼(AID): #1RjYByTZ (Visual_Basic)