如何从c++中调用c#的com组件
2008-09-25 17:27
471 查看
开发环境VS2005
1、 首先创建一个c#的类库项目。
2、 将AssemblyInfo.cs文件中的[assembly: ComVisible(false)]改为[assembly: ComVisible(true)],或者在项目属性中“应用程序”构选上“使程序集com可见”复选框。
3、 在项目属性中”生成”构选上”为com interop注册”复选框。
4、 参考以下代码及MSDN中COM 类示例(C# 编程指南):
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Runtime.InteropServices;
namespaceYoutube
{
[Guid("FA1BEAD8-D5E2-4a70-ACDF-0A7FB4DA17FD")]
publicinterfaceIYoutubeService
{
voidUploadFile();
}
[Guid("2BD4711C-CAC0-4df5-B167-447FCD00D55C"),
ClassInterface(ClassInterfaceType.AutoDispatch)]
publicclassYoutubeService : IYoutubeService
{
publicvoidUploadFile()
{
Console.WriteLine("My Com Test!");
}
}
}
5、 编译,这时候会生成*.dll文件和*.tlb文件
6、 创建一个vc++的控制台项目,将*.tlb文件拷贝到vc++工程目录下
7、 Vc++代码如下:
#include"stdafx.h"
#import"Youtube.tlb"
#include<stdio.h>
#include<comutil.h>
#pragmacomment(lib,"comsuppw.lib")
usingnamespaceYoutube;
int_tmain(intargc, _TCHAR* argv[])
{
CoInitialize(NULL);
try
{
IYoutubeServicePtrservice( __uuidof( YoutubeService ) );
service->UploadFile();
}
catch (const_com_error& e)
{
}
CoUninitialize();
return 0;
}
8、编译程序,并把之前的*.dll文件拷贝到和生成exe一起,运行程序则测试ok!
1、 首先创建一个c#的类库项目。
2、 将AssemblyInfo.cs文件中的[assembly: ComVisible(false)]改为[assembly: ComVisible(true)],或者在项目属性中“应用程序”构选上“使程序集com可见”复选框。
3、 在项目属性中”生成”构选上”为com interop注册”复选框。
4、 参考以下代码及MSDN中COM 类示例(C# 编程指南):
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Runtime.InteropServices;
namespaceYoutube
{
[Guid("FA1BEAD8-D5E2-4a70-ACDF-0A7FB4DA17FD")]
publicinterfaceIYoutubeService
{
voidUploadFile();
}
[Guid("2BD4711C-CAC0-4df5-B167-447FCD00D55C"),
ClassInterface(ClassInterfaceType.AutoDispatch)]
publicclassYoutubeService : IYoutubeService
{
publicvoidUploadFile()
{
Console.WriteLine("My Com Test!");
}
}
}
5、 编译,这时候会生成*.dll文件和*.tlb文件
6、 创建一个vc++的控制台项目,将*.tlb文件拷贝到vc++工程目录下
7、 Vc++代码如下:
#include"stdafx.h"
#import"Youtube.tlb"
#include<stdio.h>
#include<comutil.h>
#pragmacomment(lib,"comsuppw.lib")
usingnamespaceYoutube;
int_tmain(intargc, _TCHAR* argv[])
{
CoInitialize(NULL);
try
{
IYoutubeServicePtrservice( __uuidof( YoutubeService ) );
service->UploadFile();
}
catch (const_com_error& e)
{
}
CoUninitialize();
return 0;
}
8、编译程序,并把之前的*.dll文件拷贝到和生成exe一起,运行程序则测试ok!
相关文章推荐
- C++和C#编写并且相互调用COM组件
- C++调用C#编写的COM组件
- 打通 C++ 和 C# 关于 COM 组件互相调用的任督二脉
- C++调用C# COM组件
- VC6.0和VS2005:C++和C#编写调用COM组件
- C++调用C#编写的COM组件
- C++和C#编写调用COM组件
- C++和C#编写调用COM组件
- 打通 C++ 和 C# 关于 COM 组件互相调用的任督二脉
- C++ 调用 C#的COM组件
- C++和C#编写并且相互调用COM组件
- 打通 C++ 和 C# 关于 COM 组件互相调用的任督二脉
- C++和C#编写调用COM组件
- C++调用C# COM组件
- C++和C#编写调用COM组件
- [转]C++和C#编写调用COM组件
- COM 打通 C++ 和 C# 关于 COM 组件互相调用的任督二脉 (转)
- C++和C#编写调用COM组件
- VC6.0和VS2005:C++和C#编写调用COM组件
- C#调用C++编写的COM DLL