其他语言可以识别这种接口吗(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 。







...全文
337 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
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编译方式的结构体包裹一下, 丢给用户。 类似个句柄的法子。 不知道这样可行否"?

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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