用ATL做了一个com服务程序,编译成功后想在客户端调用,却发现找不到自动生成的_i.h文件,如何解决?? ? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 重新用MIDL编译,或者在客户端使用#import指令导入.tlb类型库亦可。 请问如何重新用MIDL编译?我用的是VC6.0 在你的IDL文件上单击右键就可以看到了 titilima(李马)(titilima.yeah.net) 能否详细些?我将tlb类型库拷贝到工程下,这样写#import "SimpleTest.tlb"void CTestAtlDlg::OnTestAtl() { HRESULT hr; IMyAltTest* pIntf = NULL; hr = CoCreateInstance(CLSID_MyAltTest, NULL, CLSCTX_SERVER , IID_IMyAltTest, (void **)& pIntf); if(SUCCEEDED(hr)) { pIntf->Wellcome(); pIntf->Release(); } }报错为IMyAltTest' : undeclared identifier 看看tlb有namespace没有?如果有的话就在#import后面加入相应的using namespace 你的命名空间 如果这个ATL是你自己写的,你可以在IDL文件上单击右键,选择settings,然后设置输出的.h和_i.c文件名,然后再用MIDL编译这个文件就会生成相应的文件了。 我用atl 建立了一个com,是支持mfc的dll,其中一个接口函数显示了对话框STDMETHODIMP CMyAltTest::Wellcome(){ AFX_MANAGE_STATE(AfxGetStaticModuleState()) MessageBox(NULL,_T("how are you"),_T("hello"),MB_OK); return S_OK;}客户端调用这个函数的时候,这样做#import "SimpleTest.tlb"#include "SimpleTest.h"#include "SimpleTest_i.c"HRESULT hr; IMyAltTest* pIntf = NULL; hr = CoCreateInstance(CLSID_MyAltTest, NULL, CLSCTX_SERVER , IID_IMyAltTest, (void **)& pIntf); if(SUCCEEDED(hr)) { pIntf->Wellcome(); pIntf->Release(); }却没有弹出消息框为何??? CLSCTX_SERVER --> CLSCTX_INPROC_SERVER mfc可视化编辑时vc右下角的数字问题 网页里面如何改变ActiveX控件的位置 怎么获得标量函数的值?比如MIN函数,谢谢。 如何使CBCGPToolBar工具栏图标透明 关于窗口分割问题 读取HID_USB 数据的时候,我只读取一次却会显示读取两遍(在USB监控软件里看见的)。 请教一个用vfw采集视频,然后用directdraw画图显示的问题,在线等待 高手请进:讨论各种不同的Dll形式和他们的特点!!! 网页里的密码框有没有什么特征,如何判别? 热心的朋友帮忙看看 这段代码为什么会出现内存错误?? 菜鸟提问
#import "SimpleTest.tlb"
void CTestAtlDlg::OnTestAtl()
{
HRESULT hr;
IMyAltTest* pIntf = NULL;
hr = CoCreateInstance(CLSID_MyAltTest, NULL, CLSCTX_SERVER ,
IID_IMyAltTest, (void **)& pIntf);
if(SUCCEEDED(hr))
{
pIntf->Wellcome();
pIntf->Release();
}
}
报错为
IMyAltTest' : undeclared identifier
using namespace 你的命名空间
STDMETHODIMP CMyAltTest::Wellcome()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()) MessageBox(NULL,_T("how are you"),_T("hello"),MB_OK);
return S_OK;
}
客户端调用这个函数的时候,这样做
#import "SimpleTest.tlb"
#include "SimpleTest.h"
#include "SimpleTest_i.c"
HRESULT hr;
IMyAltTest* pIntf = NULL;
hr = CoCreateInstance(CLSID_MyAltTest, NULL, CLSCTX_SERVER ,
IID_IMyAltTest, (void **)& pIntf);
if(SUCCEEDED(hr))
{
pIntf->Wellcome();
pIntf->Release();
}
却没有弹出消息框为何???