COM组件(exe或dll)发布时都必须跟一个tlb文件吗?(高分相赠) 我一直使用VC6+ATL制作COM组件,有进程内形式的dll也有进程外形式的exe但在最终使用时,这些组件都必须和同名的.tlb文件放在一个目录下,客户端才能调用请问有什么办法将组件和它的tlb文件打包在一起,变成一个文件?有人说在组件的资源里加一句 IDR_TYPELIB1 typelib "MyCOM.tlb"但我试了不行:(困扰很久的问题,感激涕零 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 但我把组件的tlb文件删除后,客户端程序确实调用它失败呀:( 不需要,tlb是给脚本语言用的东西. 客户端也是用VC6写的调用代码如下void CClientDlg::OnButtonComStart() { // TODO: Add your control notification handler code here HRESULT hr = m_pExeCom.CreateInstance(_T("ExeTest.ExeCom.1")); //用ProgI的调用,用GUID调用也一样依赖tlb if (FAILED(hr)) { return; }}如果组件没有和tlb文件放在一起, hr就会返回错误我是用ATL做的组件,是不是ATL做的组件都是这样, 还是有什么设置? 注册了, 只要组件和tlb放在一起, 可以完全正常的使用 很奇怪,我都直接按照默认的选项来,就不需要,直接一个dll别人就可以用了. tlb相当于头文件,只要你不import它,它就没用处.VC调用根本不用import这么一个文件. 当你以#import方式导入tlb时,需要有这个文件,然后生成对应的com对象类等来操作还有其他方式可以调用到com组件,如CoCreateInstance创建对应的对象.. 当然需要com对象生成的.c,.h文件 在这一点上我没有异议现在的情况是在客户端和组件端两个程序都已经编译完成,且能够正常工作的情况下,只要删除了tlb文件,客户端的createInstance就返回失败 自己找到办法了因为我的组件都不是直接用ATL生成,而是通过给一般的MFC程序添加ATL支持做的,所以在Resource里不会自动添加 1 TYPELIB "res\ExeTest.tlb"在IDE菜单里 View -> Resource Includes里加上这句就行了:) vc++2010 组合框问题 mfc 双缓冲绘图 问题 为什么用CImage类进行像素操作会这么慢???请高手指点一下。 求各位帮个忙啊,关于CStatic 类的问题。 在LISTCTR的CHECKBOX, 用什么方法实现全选和选择部分画勾的ITEM? 菜鸟问题,本人很少用VC,请问下列功能如何实现,内否给些例子,高分求解 请我在浏览 资源浏览器的时候,把资源里面的文件夹拖到我的窗体的时候,怎么来得到文件夹的路径呢? 如何为COM加上设计期许可? 大家好,我有一个问题谁可以帮助我??? 里哪个个问题,巨分相送,在线等待 我HOOK 程序遇到的问题! 禁止修改系统时间
但我把组件的tlb文件删除后,客户端程序确实调用它失败呀:(
客户端也是用VC6写的
调用代码如下void CClientDlg::OnButtonComStart()
{
// TODO: Add your control notification handler code here
HRESULT hr = m_pExeCom.CreateInstance(_T("ExeTest.ExeCom.1")); //用ProgI的调用,用GUID调用也一样依赖tlb
if (FAILED(hr))
{
return;
}
}如果组件没有和tlb文件放在一起, hr就会返回错误我是用ATL做的组件,是不是ATL做的组件都是这样, 还是有什么设置?
注册了, 只要组件和tlb放在一起, 可以完全正常的使用
还有其他方式可以调用到com组件,如CoCreateInstance创建对应的对象..
在这一点上我没有异议现在的情况是在客户端和组件端两个程序都已经编译完成,且能够正常工作的情况下,只要删除了tlb文件,客户端的createInstance就返回失败