作者su35 (su35)
看板Visual_Basic
标题Re: [VBA ] 使用C++作的DLL 出现错误
时间Sun Aug 30 14:03:05 2009
※ 引述《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