com连接的问题?急!

lcp 2003-02-19 10:37:01
各位大虾:
我在程序中BmpView使用了自己的一个com类ComMemBitmap,
编联时提示如下错误:

BmpView.obj : error LNK2001: unresolved external symbol _CLSID_ComMemBitmap
Release/BmpView.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

是怎么回事呢?
...全文
38 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
younger198204 2003-02-19
  • 打赏
  • 举报
回复
把函数CoCreateInstance()的其他参数多代入看看如何
lcp 2003-02-19
  • 打赏
  • 举报
回复
是执行pMemBitmap.CoCreateInstance(CLSID_ComMemBitmap);时出现非法操作?
我的组件是在本机上用vc创建的,我想应该已经注册了吧,是吗?
aypnia 2003-02-19
  • 打赏
  • 举报
回复
你的组件有没有注册?
aypnia 2003-02-19
  • 打赏
  • 举报
回复
是返回值不正确还是执行pMemBitmap.CoCreateInstance(CLSID_ComMemBitmap);时出现非法操作?
lcp 2003-02-19
  • 打赏
  • 举报
回复
CoInitialize(NULL);
CoUninitialize();
我都有加,整个函数是这样的:
#include "Membitmap/Membitmap.h"
#include "Membitmap/Membitmap_i.c"

...

CoInitialize(NULL) ;

CComPtr<IComMemBitmap> pMemBitmap ;

HRESULT hr = pMemBitmap.CoCreateInstance(CLSID_ComMemBitmap);
if (FAILED(hr))
{return;}

CoUninitialize( );



请帮我看一看!谢了!
aypnia 2003-02-19
  • 打赏
  • 举报
回复
最好不要直接用
#include "yourproj_i.c"

我一般是使用#import语句
#import "yourproj.tlb" no_namespace, named_guids
aypnia 2003-02-19
  • 打赏
  • 举报
回复
前面加
::CoInitialize(NULL);

对象释放后用
::CoUninitialize();释放资源

lcp 2003-02-19
  • 打赏
  • 举报
回复
谢谢cheng_young(古道西风瘦马) !
我现在编联可以通过了。可是执行时出现错误,
在语句:
HRESULT hr = pMemBitmap.CoCreateInstance(CLSID_ComMemBitmap);
为什么???
cheng_young 2003-02-19
  • 打赏
  • 举报
回复
#include "yourproj_i.c"
lcp 2003-02-19
  • 打赏
  • 举报
回复
终于搞定了,
原来COM没什么错误了,
是我自己一个指针指错了地方,
谢谢大家!
lwg7603 2003-02-19
  • 打赏
  • 举报
回复
在stdafx.h中头部加入:
#ifdef _DEBUG
#define _ATL_STATIC_REGISTRY
#endif

试试~~~
lwg7603 2003-02-19
  • 打赏
  • 举报
回复
是不是你的dll在含有中文字符的目录中呀 ??
younger198204 2003-02-19
  • 打赏
  • 举报
回复
我以前的用法
#include **_i.c
#include **.h
在应用程序中声明该interface
HRESULT hr;
CoInitialize(NULL);

hr = CoCreateInstance( CLSID_MYATL,
NULL,
CLSCTX_INPROC_SERVER,
IID_IMYATL,
(void**) &m_pIMYATL);
m_pIMYATL是该interface的指针;
CLSID_MYATL,IID_IMYATL在**_i.c文件中有定义

看看可不可以了
lcp 2003-02-19
  • 打赏
  • 举报
回复
我有用
regsvr32 path/membitmap.dll
显示succeed.
然后set active configuration 为debug,重新build.
还是不行!!!
天哪!
aypnia 2003-02-19
  • 打赏
  • 举报
回复
regsvr32 PATH\YourCOM.DLL
路径要是绝对路径
lcp 2003-02-19
  • 打赏
  • 举报
回复
CoCreateInstance返回值为:
REGDB_E_CLASSNOTREG
要怎么样才能正确注册呢?
lcp 2003-02-19
  • 打赏
  • 举报
回复
younger198204(young)您好;
我现在选用 CLSCTX_LOCAL_SERVER参数来
CoCreateInstance();
没有非法操作出现了,但是CoCreateInstance失败,返回值FAILED(hr);
请再帮帮忙看看吧。
第一次写COM的程序,真辛苦。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧