其他语言可以识别这种接口吗(c语言的)

combobox2013 2013-01-31 10:13:59
dll里的接口函数类型

//以c编译方式提供的
#ifdef _cplusplus
extern"C"
{
#endif
typedef tagMyHandle {} * MyHandle;
#ifdef _cplusplus
}
#endif

dll接口函数的参数类型是 MyHandle,通过MyHandle去 调用c++类。

到达的好处:1.可以有效的保护c++代码,让用户不知道我们的关键代码,甚至类的声明都不知道!!!

2.由于用c编译方式提供 结构体,所以 很多语言应该支持可以识别这个MyHandle 。







...全文
300 15 点赞 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
combobox2013 2013-02-01
  • 打赏
  • 举报
回复
bsnry 2013-02-01
windows 句柄????
  • 打赏
  • 举报
回复
combobox2013 2013-02-01
引用 12 楼 smileliuok 的回复:
这个东西啊,做过一次,C++ dll导出一堆类,供C#调用,最后还是写了一个托管堆上的类库,把这个dll二次包装了一下,C#才调用成功。
不可能,你用我的法子试试,应该可以不用托管二次包装吧。
  • 打赏
  • 举报
回复
smileliuok 2013-02-01
这个东西啊,做过一次,C++ dll导出一堆类,供C#调用,最后还是写了一个托管堆上的类库,把这个dll二次包装了一下,C#才调用成功。
  • 打赏
  • 举报
回复
combobox2013 2013-02-01
再顶,不能沉了
  • 打赏
  • 举报
回复
Saleayas 2013-01-31
不是有标准的接口语法吗? IDL
  • 打赏
  • 举报
回复
combobox2013 2013-01-31
我的这个法子,可以让大多数语言使用这个dll 吗? 如果这个接口的参数类型是这样的呢? //以c或者c++编译方式提供的 // #ifdef _cplusplus // extern"C" //{ // #endif typedef tagMyHandle {} * MyHandle; //#ifdef _cplusplus //} //#endif
  • 打赏
  • 举报
回复
combobox2013 2013-01-31
引用 1 楼 zodiac1111 的回复:
lua?
c,c++写的dll 不过接口的参数类型是c语言的结构体
  • 打赏
  • 举报
回复
zodiac1111 2013-01-31
lua?
  • 打赏
  • 举报
回复
combobox2013 2013-01-31
引用 9 楼 combobox2013 的回复:
引用 7 楼 Kaile 的回复:这种用法倒没有用处,不能确定,关注一下。 感觉其他语言调用C++的dll,如果导出的是类的话,比较麻烦,不如导出若干个方法或者说函数,参数用基本类型,int char*之类的,接驳起来比较方便。 额额 你说也是,我觉得既然是个指针,32位平台,反正是4字节,那么 也可以是其他指针来 包裹内部的c++ 内。 感觉这个法子……
顶起来
  • 打赏
  • 举报
回复
combobox2013 2013-01-31
引用 7 楼 Kaile 的回复:
这种用法倒没有用处,不能确定,关注一下。 感觉其他语言调用C++的dll,如果导出的是类的话,比较麻烦,不如导出若干个方法或者说函数,参数用基本类型,int char*之类的,接驳起来比较方便。
额额 你说也是,我觉得既然是个指针,32位平台,反正是4字节,那么 也可以是其他指针来 包裹内部的c++ 内。 感觉这个法子有点像 windows里的句柄。 我贴文章给你们看, 有兴趣的可以看看 http://www.codeproject.com/Articles/28969/HowTo-Export-C-classes-from-a-DLL C Language Approach 这一节讲解的。
  • 打赏
  • 举报
回复
Kaile 2013-01-31
这种用法倒没有用过,纠错。
  • 打赏
  • 举报
回复
Kaile 2013-01-31
这种用法倒没有用处,不能确定,关注一下。 感觉其他语言调用C++的dll,如果导出的是类的话,比较麻烦,不如导出若干个方法或者说函数,参数用基本类型,int char*之类的,接驳起来比较方便。
  • 打赏
  • 举报
回复
combobox2013 2013-01-31
  • 打赏
  • 举报
回复
combobox2013 2013-01-31
引用 4 楼 Saleayas 的回复:
不是有标准的接口语法吗? IDL
你的是com 我是这么想的,既然 大部分开发平台都能够支持c语言的接口。 但是 我们的c++ 类直接导出的话,很多其他语言就无法使用了。 于是用c编译方式的结构体包裹一下, 丢给用户。 类似个句柄的法子。 不知道这样可行否"?
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ 语言
加入

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2013-01-31 10:13
社区公告
暂无公告