客户端怎样调用COM组件???????????????? 写了一个很简单的COM组件(只有一个接口ITest),怎样将用一个exe程序来测试这个接口?要加入那些文件,最好详细一点因为,我太菜了。。(我在EXE程序中:ITest * test; 说没有定义。我该怎样操作呢?) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 保存并关闭Simple_ATL工程,然后创建一个新的Win32 控制台应用程序。选择“Win32 Console Application”并取名为“Test_ATL”。单击OK按钮并接受对话框中的缺省设置(空的工程)。单击“Finish”按钮,然后再按OK按钮。这样就创建好了一个空的工程。按下“Control+N”键向工程中添加一个文件。从弹出的窗口中选择“C++ Source File”并为它取名为“Test_ATL.cpp”。按下OK按钮。这样工程中就有了一个空的.CPP文件。我们要在这个文件中添加一些测试COM服务器的代码:// 将头文件的目录指到Simple_ATL工程所在的目录#include "..\Simple_ATL\Simple_ATL.h"#include // 从Simple_ATL 工程所在目录的Simple_ATL_i.c 文件中拷贝以下内容// 注意: 你也可以不拷贝这些东西,而是把文件Simple_ATL_i.c包含进来。// 我之所以将它拷进来,是想更清楚地展示这些敞亮来自什么地方一击它们的代码const IID IID_IFirst_ATL = {0xC8F6E230,0x2672,0x11D3,{0xA8,0xA8,0x00,0x10,0x5A,0xA9,0x43,0xDF}};const CLSID CLSID_First_ATL = {0x970599E0,0x2673,0x11D3,{0xA8,0xA8,0x00,0x10,0x5A,0xA9,0x43,0xDF}};void main(void){// 声明HRESULT和Simple_ATL接口指针HRESULT hr;IFirst_ATL *IFirstATL = NULL;// 初始化COMhr = CoInitialize(0);// 使用SUCCEEDED 宏并检查我们是否能得到一个接口指针 if(SUCCEEDED(hr)){hr = CoCreateInstance( CLSID_First_ATL, NULL, CLSCTX_INPROC_SERVER,IID_IFirst_ATL, (void**) &IFirstATL);// 如果成功,则调用AddNumbers方法,否则显示相应的出错信息if(SUCCEEDED(hr)){long ReturnValue;IFirstATL->AddNumbers(5, 7, &ReturnValue);cout << "The answer for 5 + 7 is: " << ReturnValue << endl;IFirstATL->Release(); }else{cout << "CoCreateInstance Failed." << endl;}}// 释放COMCoUninitialize();}编译并运行测试程序 按下“F5”功能键,编译测试程序,然后按“Control+F5”功能组合键运行测试程序。在DOS窗口中,你应该能看到输出的结果。 为什么我添加文件atltest_i.c到exe测试文件,老提示:f:\alttest\atltest_i.c(51) : fatal error C1010: unexpected end of file while looking for precompiled header directive怎样解决? 谢谢 bench(老老实实编码) 学到不少东西。 也可以使用如下方法:在客户端程序中加入如下语句:Import "×××.tlb" named_guids×××.tlb屎ATL编译屎生成的一个文件。这样可以使用智能指针:接口名+Ptr如你的接口屎ITest,则用ITestPtr定义智能指针即可 #Include "f:\alttest\atltest_i.c" in.. 应用程序正常初始化(0xc0150002)失败。请单击“确定”,终止应用程序。求解 使用CAsyncSocket建立连接的问题 系统消息队列是否存在 一个字符串相加的问题 请教一道小网络程序,类似ping 别人的程序,其中几行不明白。请问下面2组赋值方法有什么区别?(一个有&,一个没有&)是笔误还是有其它用意? 怎样知道某进程是否在运行? 怎样在状态栏中添加位图 为什么我通过ClassWizard加入CTreeView的子类后,出这样的错? 请问怎么做一个ActiveX的例子,里面实现打印预览的功能 使用VC的MFC编程如何实现读配置文件 组件中使用对话框的奇怪问题
#include
// 从Simple_ATL 工程所在目录的Simple_ATL_i.c 文件中拷贝以下内容
// 注意: 你也可以不拷贝这些东西,而是把文件Simple_ATL_i.c包含进来。
// 我之所以将它拷进来,是想更清楚地展示这些敞亮来自什么地方一击它们的代码
const IID IID_IFirst_ATL =
{0xC8F6E230,0x2672,0x11D3,{0xA8,0xA8,0x00,0x10,0x5A,0xA9,0x43,0xDF}};const CLSID CLSID_First_ATL =
{0x970599E0,0x2673,0x11D3,{0xA8,0xA8,0x00,0x10,0x5A,0xA9,0x43,0xDF}};void main(void)
{
// 声明HRESULT和Simple_ATL接口指针
HRESULT hr;
IFirst_ATL *IFirstATL = NULL;// 初始化COM
hr = CoInitialize(0);// 使用SUCCEEDED 宏并检查我们是否能得到一个接口指针
if(SUCCEEDED(hr))
{
hr = CoCreateInstance( CLSID_First_ATL, NULL, CLSCTX_INPROC_SERVER,
IID_IFirst_ATL, (void**) &IFirstATL);// 如果成功,则调用AddNumbers方法,否则显示相应的出错信息
if(SUCCEEDED(hr))
{
long ReturnValue;IFirstATL->AddNumbers(5, 7, &ReturnValue);
cout << "The answer for 5 + 7 is: " << ReturnValue << endl;
IFirstATL->Release();
}
else
{
cout << "CoCreateInstance Failed." << endl;
}
}
// 释放COM
CoUninitialize();
}编译并运行测试程序
按下“F5”功能键,编译测试程序,然后按“Control+F5”功能组合键运行测试程序。在DOS窗口中,你应该能看到输出的结果。
学到不少东西。
在客户端程序中加入如下语句:
Import "×××.tlb" named_guids
×××.tlb屎ATL编译屎生成的一个文件。
这样可以使用智能指针:接口名+Ptr
如你的接口屎ITest,则用ITestPtr定义智能指针即可