ATL作的DLL的接口中加入结构的问题?

sky 2003-08-04 11:43:21
在VC中用ATL做得DLL,在VB中以部件的方式调用此DLL,由于想要在VB和VC之间传递结构,而且结构中包括了一些数组,该怎样把这个结构加入到DLL中,从而能够在VB中直接调用,从而实现VB和此DLL传递结构的问题呢,请教各位了,那位有实际的经验请指教了,非常感谢!
...全文
26 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky 2003-08-13
  • 打赏
  • 举报
回复
我在接口中加入了结构,编译成功了,而且在VB中也能看见此结构,但是怎样才能将此结构的结果传递到VB中呢,我写了个接口函数,让其返回值为此结构的指针,但是在VB中调用时,为什么说是非法的呢?请教各位了!
ldsjlzy 2003-08-13
  • 打赏
  • 举报
回复
在idl中定义结构体
typedef struct
{
long a;
long b;
}mySt;

接口定义如下方法:
STDMETHODIMP CTestStruct::Test(mySt st)
{
st.a = 1;
st.b = 2;
return S_OK;
}

kingzai 2003-08-12
  • 打赏
  • 举报
回复
Heres a
link that may give you some ideas on developing an approach to the problem:

http://www.mvps.org/vcfaq/com/4.htm
drhenry 2003-08-12
  • 打赏
  • 举报
回复
typedef [uuid(BFB7334B-822A-1068-8849-00DD011087E8),
helpstring("A task"), helpcontext(1019)]
struct {
DATE startdate;
DATE enddate;
BSTR ownername;
SAFEARRAY (int) subtasks;
int A_C_array[10];
} TASKS;
loneywolf 2003-08-12
  • 打赏
  • 举报
回复
1.把该结构做成一个对象,结构的每个成员单独作为属性或者方法的参数。
2.要想在VB中直接用数组,在VC中得用安全数组SAFEARRAY。因为VB中的数组总是安全数组。
sky 2003-08-12
  • 打赏
  • 举报
回复
是直接加代码,还是通过其他方式呢?能举个例子吗?
LuckFox 2003-08-12
  • 打赏
  • 举报
回复
你把结构定义在IDL中就行了!CALL时候包含头文件!!
sky 2003-08-12
  • 打赏
  • 举报
回复
非常感谢各位:
但是怎样把结构作为一个对象加入呢,能说得具体些吗?
结构的每个成员单独作为属性或者方法的参数,这句话的意思是说不能把结构作为方法的参数吗,能举个例子吗,非常感谢了!
newlife2002_313 2003-08-12
  • 打赏
  • 举报
回复
Where can we download the book <<com 精彩编程实例>>?
Microsoftadherent 2003-08-12
  • 打赏
  • 举报
回复
agree drhenry.
suggest that you look up the book <<com 精彩编程实例>>,there is a sample just as what you describe in it.
sky 2003-08-06
  • 打赏
  • 举报
回复
没有一位知道吗,哪怕一点线索,或者推荐资料,感谢了,主要是在ATL中如何让接口中的函数能返回结构的问题。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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