BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / dot-net / #2001同步于 2010/6/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖

【求助】C#开发的界面可以调用C++的扩展DLL插件吗?

imccoder
2010/6/21镜像同步14 回复
有个程序界面使用C#开发的,现在为了以后的扩展性想用C++开发DLL作为插件。现在没有什么思路,我只知道C#掉C++的DLL是可以的。可是我的界面确不知道插件有哪些导出函数,以及接口参数等。不知道大家有没有什么好的思路? 谢谢!
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
hom机器人#1 · 2010/6/21
可以
snoopyboy机器人#2 · 2010/6/21
看看互操作相关的东东 你可以写一个C#的接口dll内部负责调用C++的dll C#的界面只面向C#的dll编程(方便使用智能提示,也增强一些灵活性) C++dll的public接口函数在C#dll内部写好,这个编程调用方法时可是没有智能提示的哦 ,只能一个字母不错的一点点写出来... 个人意见仅供参考~~ 【 在 imccoder (imccoder) 的大作中提到: 】 : 有个程序界面使用C#开发的,现在为了以后的扩展性想用C++开发DLL作为插件。现在没有什么思路,我只知道C#掉C++的DLL是可以的。可是我的界面确不知道插件有哪些导出函数,以及接口参数等。不知道大家有没有什么好的思路? : 谢谢!
monarch机器人#3 · 2010/6/21
调用是肯定可以的,但是肯定得知道C++的导出函数以及接口参数,不然在C#里怎么传参 【 在 imccoder 的大作中提到: 】 : 有个程序界面使用C#开发的,现在为了以后的扩展性想用C++开发DLL作为插件。现在没有什么思路,我只知道C#掉C++的DLL是可以的。可是我的界面确不知道插件有哪些导出函数,以及接口参数等。不知道大家有没有什么好的思路? : 谢谢!
wks机器人#4 · 2010/6/21
长期征解中。欢迎大牛补充 8.2. 现有一个主程序用C#语言写成。现在要允许第三方开发人员用C语言编写扩展的模块,如何设计主程序,以及如何规定扩展模块应满足的条件,才能使得如果要求第三方的类能够与主程序的二进制代码分开发布,把dll或so丢在某个文件夹内即可被动态装载使用? 附全文: http://cloverprince.javaeye.com/blog/481307 ======== 第一组 ======== 1. 现有一个主程序用C语言写成。现在要允许第三方开发人员编写扩展的模块,约定第三方开发的模块必须提供一系列已知名称的函数(如 foo(),bar(),baz())。如果要求第三方的模块必须与主程序的二进制代码分开发布,把dll或so丢在某个文件夹内即可被动态装载并使用,应如何实现? 2. 现有一个主程序用C++语言写成。现在要允许第三方开发人员编写扩展的类,约定第三方开发的类必须包含一个继承自某个已知类(如class FooPlugin)的子类,名称不限。如果要求第三方的类必须与主程序的二进制代码分开发布,把dll或so丢在某个文件夹内即可被动态装载使用,应如何实现? 3. 现有一个主程序用Java语言写成。现在要允许第三方开发人员编写扩展的类,约定第三方开发的类必须包含一个实现了某个已知接口(如interface IFooPlugin)的类,名称不限。如果要求第三方的类必须与主程序的bytecode分开发布,把.class放在classpath相应位置,或把jar丢在某个文件夹内即可被动态装载使用,应如何实现? 4. 现有一个主程序用C#语言写成。现在要允许第三方开发人员编写扩展的类,约定第三方开发的类必须包含一个实现了某个已知接口(如interface IFooPlugin)的类,名称不限。如果要求第三方的类必须与主程序的二进制代码分开发布,把dll丢在某个文件夹内即可被动态装载使用,应如何实现? 5. 现有一个主程序用Python语言写成。现在要允许第三方开发人员编写扩展的类,约定第三方开发的类必须包含一个继承自某个已知类(如class FooPlugin)的子类,名称不限。如果要求第三方的类必须与主程序的py脚本或pyc字节码分开发布,把py或pyc丢在某个文件夹内即可被动态装载使用,应如何实现? 6. 现有一个主程序用C语言写成。现在要允许第三方开发人员编写扩展的类(试试GLib,你可以用C语言写面向对象的程序),约定第三方开发的类必须包含一个实现了某个已知接口(如interface IFooPlugin)的类,名称不限。如果要求第三方的类必须与主程序的二进制代码分开发布,把dll或so丢在某个文件夹内即可被动态装载使用,应如何实现? ======== 第二组 ======== 6.1. 现有一个主程序用C语言写成。现在要允许第三方开发人员用C++语言编写扩展的类,如何设计主程序,以及如何规定扩展类(及其所在模块)应满足的条件,才能使得如果要求第三方的类能够与主程序的二进制代码分开发布,把dll或so丢在某个文件夹内即可被动态装载使用? 6.2. 现有一个主程序用C++语言写成。现在要允许第三方开发人员用C语言编写扩展的模块,如何设计主程序,以及如何规定扩展模块应满足的条件,才能使得如果要求第三方的类能够与主程序的二进制代码分开发布,把dll或so丢在某个文件夹内即可被动态装载使用? 7.1. 现有一个主程序用C语言写成。现在要允许第三方开发人员用Java语言编写扩展的类,如何设计主程序,以及如何规定扩展类(及其所在模块)应满足的条件,才能使得如果要求第三方的类能够与主程序的二进制代码分开发布,把jar丢在某个文件夹内即可被动态装载使用? 7.2. 现有一个主程序用Java语言写成。现在要允许第三方开发人员用C语言编写扩展的模块,如何设计主程序,以及如何规定扩展模块应满足的条件,才能使得如果要求第三方的类能够与主程序的二进制代码分开发布,把dll或so丢在某个文件夹内即可被动态装载使用? 8.1. 现有一个主程序用C语言写成。现在要允许第三方开发人员用C#语言编写扩展的类,如何设计主程序,以及如何规定扩展类(及其所在模块)应满足的条件,才能使得如果要求第三方的类能够与主程序的二进制代码分开发布,把dll丢在某个文件夹内即可被动态装载使用? 8.2. 现有一个主程序用C#语言写成。现在要允许第三方开发人员用C语言编写扩展的模块,如何设计主程序,以及如何规定扩展模块应满足的条件,才能使得如果要求第三方的类能够与主程序的二进制代码分开发布,把dll或so丢在某个文件夹内即可被动态装载使用? 9.1. 现有一个主程序用C语言写成。现在要允许第三方开发人员用Python语言编写扩展的类,如何设计主程序,以及如何规定扩展类(及其所在模块)应满足的条件,才能使得如果要求第三方的类能够与主程序的二进制代码分开发布,把py或pyc丢在某个文件夹内即可被动态装载使用? 9.2. 现有一个主程序用Python语言写成。现在要允许第三方开发人员用C语言编写扩展的模块,如何设计主程序,以及如何规定扩展模块应满足的条件,才能使得如果要求第三方的类能够与主程序的二进制代码分开发布,把dll或so丢在某个文件夹内即可被动态装载使用? 10.1. 现有一个主程序用C++语言写成。现在要允许第三方开发人员用Python语言编写扩展的类,如何设计主程序,以及如何规定扩展类(及其所在模块)应满足的条件,才能使得如果要求第三方的类能够与主程序的二进制代码分开发布,把py或pyc丢在某个文件夹内即可被动态装载使用? 10.2. 现有一个主程序用Python语言写成。现在要允许第三方开发人员用C++语言编写扩展的类,如何设计主程序,以及如何规定扩展类(及其所在模块)应满足的条件,才能使得如果要求第三方的类能够与主程序的二进制代码分开发布,把dll或so丢在某个文件夹内即可被动态装载使用? 11.1. 主程序用Java或C#,模块用C++。 11.2. 主程序用C++,模块用Java或C#。 12.1. 主程序用Java,模块用C#。 12.2. 主程序用C#,模块用Java。 13.1. 主程序用Java或C#,模块用Python。 13.2. 主程序用Python,模块用Java或C#。 14.1. 主程序是用C写的面向对象程序,模块用C++,Java,C#或Python。 14.2. 主程序是C++,Java,C#或Python,模块用C,面向对象。 ======== 第三组 ======== 15. 现有一个主程序用$LANGUAGE1语言写成,运行于$PLATFORM平台。现在要允许第三方开发人员用$LANGUAGE2语言编写独立的程序,独立于主程序发布,但与主程序在同一主机上运行。如何设计主、副程序,才能做到: 15.1. 只要一个程序先运行,另一个程序即可在运行时感知对方的存在? 15.2. 互相发送字节流? 15.3. 调用对方程序中的函数? 15.4. 创建对方程序中已知接口的类的实例,并调用其方法,在适当时机销毁该类? 其中LANGUAGE1,LANGUAGE2,PLATFORM= C,C,Windows C,C,Unix C++,C++,Windows C++,C++,Unix C,C++,Windows C,C++,Unix C,Java,?? C++,Java,?? C,C#,Windows/Unix+Mono C++,C#,Windows/Unix+Mono C,Python,?? C++,Python,?? Java,C#,?? Other,Other,??
imccoder机器人#5 · 2010/6/21
【 在 snoopyboy 的大作中提到: 】 : 看看互操作相关的东东 : 你可以写一个C#的接口dll内部负责调用C++的dll : C#的界面只面向C#的dll编程(方便使用智能提示,也增强一些灵活性) : ................... 谢谢!
imccoder机器人#6 · 2010/6/21
【 在 wks 的大作中提到: 】 : 长期征解中。欢迎大牛补充 : 8.2. 现有一个主程序用C#语言写成。现在要允许第三方开发人员用C语言编写扩展的模块,如何设计主程序,以及如何规定扩展模块应满足的条件,才能使得如果要求第三方的类能够与主程序的二进制代码分开发布,把dll或so丢在某个文件夹内即可被动态装载使用? : 附全文: : ................... 你就是大牛~膜拜!![ema23][ema23][ema23]
imccoder机器人#7 · 2010/6/21
【 在 hom 的大作中提到: 】 : 可以 : -- : 那一刻。。 : ................... 我也知道可以
imccoder机器人#8 · 2010/6/21
【 在 wks 的大作中提到: 】 : 长期征解中。欢迎大牛补充 : 8.2. 现有一个主程序用C#语言写成。现在要允许第三方开发人员用C语言编写扩展的模块,如何设计主程序,以及如何规定扩展模块应满足的条件,才能使得如果要求第三方的类能够与主程序的二进制代码分开发布,把dll或so丢在某个文件夹内即可被动态装载使用? : 附全文: : ................... 唉~我还以为你有答案呢
wks机器人#9 · 2010/6/21
我有答案就不用征解了。 【 在 imccoder 的大作中提到: 】 : : 长期征解中。欢迎大牛补充 : : 8.2. 现有一个主程序用C#语言写成。现在要允许第三方开发人员用C语言编写扩展的模块,如何设计主程序,以及如何规定扩展模块应满足的条件,才能使得如果要求第三方的类能够与主程序的二进制代码分开发布,把dll或so丢在某个文件夹内即可被动态装载使用? : : 附全文: : ...................