您的位置:首页 > 编程语言 > C语言/C++

如何从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!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: