求助:把VC下调用DLL转换成VB2010下调用?如何做?

michaeliao 2013-08-16 09:36:26
我现在要从一个动态库文件中调用函数,动态库里面有三个函数。我有在VC6.0下面调用这三个函数的代码,但是现在需要在VB2010下面调用

这三个函数,该如何调用?有什么好方法?最好能有简单的例子说明。

在VC6.0下面调用该DLL的类代码如下:

vbdll.h头文件:

class _AnalyseCls : public COleDispatchDriver
{
public:
_AnalyseCls() {} // Calls COleDispatchDriver default constructor
_AnalyseCls(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
_AnalyseCls(const _AnalyseCls& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}

// Attributes
public:

// Operations
public:
void SetLampAndStandSpectra(double* dValLamp, double* dValStand, double iCount);
void AnalyseSpectra(double* dVals, double iCount, double dTemp, double dPress, double* Result, double light_path,

short shift_ch);
};


CPP文件:


#include "stdafx.h"
#include "vbdll.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif



/////////////////////////////////////////////////////////////////////////////
// _AnalyseCls properties

/////////////////////////////////////////////////////////////////////////////
// _AnalyseCls operations

void _AnalyseCls::SetLampAndStandSpectra(double* dValLamp, double* dValStand, double iCount)
{
static BYTE parms[] =
VTS_PR8 VTS_PR8 VTS_R8;
InvokeHelper(0x60030000, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
dValLamp, dValStand, iCount);
}

void _AnalyseCls::AnalyseSpectra(double* dVals, double iCount, double dTemp, double dPress, double* Result, double

light_path, short shift_ch)
{
static BYTE parms[] =
VTS_PR8 VTS_R8 VTS_R8 VTS_R8 VTS_PR8 VTS_R8 VTS_I2;
InvokeHelper(0x60030001, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
dVals, iCount, dTemp, dPress, Result, light_path, shift_ch);
}
...全文
165 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jshi123 2013-08-17
  • 打赏
  • 举报
回复
这个是ole客户端调用的代码。在.net中,你可以直接找到对应的activex组件(dll文件),在项目中添加引用,.net会自动生成调用方法。
michaeliao 2013-08-17
  • 打赏
  • 举报
回复
再顶一次!!!!
michaeliao 2013-08-17
  • 打赏
  • 举报
回复
求高手指点。自己顶啊!!!!
michaeliao 2013-08-17
  • 打赏
  • 举报
回复
引用 6 楼 jshi123 的回复:
在右边项目名称上点右键,选添加引用,选com,找到dll文件,点确定 http://www.shotdev.com/aspnet/vbnet-component/vbnet-add-reference/
谢谢!确实OK。我引用的地方不对!
michaeliao 2013-08-17
  • 打赏
  • 举报
回复
谢谢,搞定!
jshi123 2013-08-17
  • 打赏
  • 举报
回复
在右边项目名称上点右键,选添加引用,选com,找到dll文件,点确定 http://www.shotdev.com/aspnet/vbnet-component/vbnet-add-reference/
michaeliao 2013-08-17
  • 打赏
  • 举报
回复
引用 3 楼 jshi123 的回复:
这个是ole客户端调用的代码。在.net中,你可以直接找到对应的activex组件(dll文件),在项目中添加引用,.net会自动生成调用方法。
我试了一下,在VB6下,可以采用你说的这种方式,但是在VB2010下,引用都会出错,无法采用这种方式。这个是什么原因? 能否指点一下怎么做?
michaeliao 2013-08-17
  • 打赏
  • 举报
回复
好像不行啊。我添加引用的时候,他说“未能添加xxxx的引用,请确保此文件可访问并且是一个可用的程序集或COM组件”。 我怀疑我这个要调用的DLL文件时VB6写的,会不会是VB6写的对VB2010不兼容?

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧