看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《pig750221 (pig)》之銘言: : ※ [本文轉錄自 C_and_CPP 看板] testdll.CPP -------------------- #include "stdafx.h" #include "testdll.h" int funadd(int a, int b) { return (a+b); } testdll.h --------------------- #ifndef TESTDLL_H #define TESTDLL_H #ifdef DLL_EXPORT #define DLLAPI __declspec(dllexport) #else #define DLLAPI __declspec(dllimport) #endif #ifdef __cplusplus extern "C" { #endif DLLAPI int funadd(int a, int b); #ifdef __cplusplus } #endif #endif 以下是vb.net <DllImport("testdll.dll", CallingConvention:=CallingConvention.Cdecl)> _ Public Shared Function funadd(ByVal a As Int32, ByVal b As Int32) As integer End Function 這樣就能用了 以上的是vc2008跟vb2008 vba能不能用我就不曉得了 : 作者: pig750221 (pig) 看板: C_and_CPP : 標題: [語法] Excel 中使用C++作的DLL 出現錯誤 : 時間: Wed Aug 19 15:35:01 2009 : 小女子現在在研究在Excel VBA中使用C++作成的DLL : Google了老半天也照上面的方法弄但是一直出現錯誤 : 版上的文章也有研究過了,不過沒有能夠解決我的問題 : 我現在要從VBA傳一個數值矩陣到DLL : 照著網路上這是我在C++的寫法 : void test1(double *data,double *summary){ : summary[0] = data[0]+data[1]; : summary[1] = data[0]+data[1]; : summary[2] = data[1]+data[2]; : summary[3] = data[3]+data[3]; : } : 也有試過在void後面和前面都加上 __stdcall : 不過結果一樣@@ : VBA這樣子宣告 : Private Declare Function test1 _ : Lib "D:\TEST.dll" _ : (ByRef data As Double, ByRef summary As Double) : Function ABC() : Dim data() As Variant : Dim summary() As Variant : ReDim data(4) : ReDim summary(4) : data(0) = Cells(1, 1) : data(1) = Cells(1, 2) : data(2) = Cells(1, 3) : data(3) = Cells(1, 4) : test1 data, summary : Cells(2, 1) = summary(0) : Cells(2, 2) = summary(1) : Cells(2, 3) = summary(2) : Cells(2, 4) = summary(3) : End Function : 我在VC++編譯有過 : 可是在VB中使用的時候一直不能使用 : 問題是出在傳進去DLL引數的時候嗎? : 麻煩各位好心人解救一下在C++要怎麼寫才能讓其他程式正確的使用 : 謝謝 -- "◢██◣ 呼呼呼~ 為什麼…我這麼愛你… ↙操B跑車 " ,█◥◥◥ ˊ 對不起,他有車。 ˋ ◢██◣ ◎ ◎ ◣◢██◣ˊ █◥◥◥ ◣◥ ▉█◥◥◥ ██████ ██◣ ██◥█" g121630作 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.153.115