日期:2014-05-19  浏览次数:20885 次

C#编译的dll是否可以在不安装FrameWork的情况下被VC6的程序调用?
C#编译的dll是否可以在不安装FrameWork的情况下被VC6的程序调用?


------解决方案--------------------
C#编译的dll是否可以在不安装FrameWork的情况下被VC6的程序调用?


可以使用.net带的TlbImp.exe、TlbExp.exe工具转化后,被vc调用
请参考 <c#高级编程> 或 《vb。net高级编程》
------解决方案--------------------
com组件可以
------解决方案--------------------
绝对不行的!
------解决方案--------------------
lz: c++与c#写的动态库,最大不同在于:后者直接写成了类似com的组件,(不过它是CLR标准)所以我们在net引用动态库是,从来不需要添加头文件!!

所以,你要是net写的动态库能使非net开发环境使用,必须从net的CLR标准转换为windows平台能通用的com标准库,具体做法:(一个范例)

namespace TestEmailer
{
[interfaceType(ComInterfaceType.InterfaceIsDual)]
public interface ICSharp
{
void sendmailMethod();
}
[ClassInterface(ClassInterfaceType.AutoDual)]
class MailM2:ICSharp
{
public void sendmailMethod()
{
……………………
}
}
}

2、创建类型库:

tlbexp TestEmailer.dll

执行后将生成TestEmailer.tlb,用COM Object Viewer看看。