DLL调用问题 我在程序中引用一个DLL,从该DLL的头文件可以看出其中包含3个类A,B,C.其中类B,类C都继承个类A,我在使用的时候可以new类A,但new类B,类C时出现link错误。请问是什么原因? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ...应该不会吧既然.h中包含了B,C的声明,就可以的。 #ifndef __KMFCODEC_H#define __KMFCODEC_H#include <time.h>class KD_KmfLib{public: typedef struct _VAL_DATA { int size; //긢??둰?긖귽긛(byte) void *data; } VAL_DATA; typedef struct _KMF_INFO { char *version; char *url; / } KMF_INFO; //------------------------- // 긖긮륃뺪?몾뫬 typedef struct _PHRASE_INFO { char *name; int start; } PHRASE_INFO; typedef struct _T3G_INFO { unsigned frequency; unsigned channel; PHRASE_INFO phrase_data[3]; } T3G_INFO;};class _KmfEncoder;class _KmfDecoder;class KD_KmfEncoder : public KD_KmfLib{public: KD_KmfEncoder(); // 긢긚긣깋긏? ~KD_KmfEncoder(); bool SetKmfInfo( const KMF_INFO & kmf_info );private: _KmfEncoder *context;};class KD_KmfDecoder : public KD_KmfLib{public: enum EN_FORMAT { FORMAT_ILLEGAL, FORMAT_3G2 }; typedef struct _DECODE_INFO { unsigned frame_no; unsigned sample_offset; unsigned sample_count; } DECODE_INFO; KD_KmfDecoder(); ~KD_KmfDecoder(); bool GetT3gData( VAL_DATA & t3g_data ); //t3g(3g2)긢??(OUT)private: _KmfDecoder *context;};#endif // __KMFCODEC_H link错误可能参数问题。返回值问题。或者函数名问题 很奇怪你的类前面不写AFX_EXT_CLASS可以导出? 一边的win32动态连接库需要导出类的话,可以用__declspec(dllexport)MFC DLL需要 AFX_EXT_CLASS导出引入的时候除了包含头文件,还需要加入相应的.lib文件。 一边的win32动态连接库===============一般的win32动态链接库打错了,不好意思 头文件是别人提供的,我只能引用,可为什么我能new KD_KmfLib()呢,而new KD_KmfEncoder(),new KD_KmfEncoder()的时候都出现link错误呢 xxx.dll,xxx.h和xxx.lib必须一致,你能保证他们一致么? 他们的名字不一样的,我把lib和dll是放在vc98的bin和lib的目录下的,作为内部调用的 你把xxx.lib和xxx.dll放在你程序的跟目录下试试.假如你用的不对就会出现你所说的link2001的问题!! 头文件是别人提供的,我只能引用,可为什么我能new KD_KmfLib()呢,而new KD_KmfEncoder(),new KD_KmfEncoder()的时候都出现link错误呢你这样也行?把这三个类都导出类;__declspecl(dllexport)你用depends看一下,dll中是否真的全部导出了这三个类 "你用depends看一下" 能具体教我一下吗?谢谢了,刚才对方把头文件该了一下,在定义类的前面都加了__declspecl(dllexport)这句,现在我可以定义一个类变量了(不能new),但调用类方法时还是报link错误, depends是VC自带工具,你用它打开DLL,可以看到导出函数 我怀疑这两个类class _KmfEncoder;class _KmfDecoder;没有导出来,如果DLL没有导出来的话,就没有办法了 基于对话框的应用程序问题 大家新年好! 小弟使用winsock编写WEB浏览器,有些问题不明白特来请教 如何带换行符号地追加写文件? 在线等,我用ADO连接ACCESS,取得的浮点数放到CListCtrl显示,-0.12只显示-.12 ,怎么解决? MFC中的对话框,其消息函数OnCreate,Create有什么区别 请问msdn和msdn library 有什么区别吗? 大侠帮帮忙,很简单的问题 请问什么“广播地址” 请问MAKEINTRESOURCE()该怎么用? 急,急,自定义消息问题(菜鸟求助),各位帮忙呀? 请教关于CPtrArray的问题 归来散分
既然.h中包含了B,C的声明,就可以的。
#define __KMFCODEC_H#include <time.h>class KD_KmfLib
{
public:
typedef struct _VAL_DATA
{
int size; //긢??둰?긖귽긛(byte)
void *data;
} VAL_DATA;
typedef struct _KMF_INFO
{
char *version;
char *url; /
} KMF_INFO; //-------------------------
// 긖긮륃뺪?몾뫬
typedef struct _PHRASE_INFO
{
char *name;
int start;
} PHRASE_INFO;
typedef struct _T3G_INFO
{
unsigned frequency;
unsigned channel; PHRASE_INFO phrase_data[3]; } T3G_INFO;};class _KmfEncoder;
class _KmfDecoder;
class KD_KmfEncoder : public KD_KmfLib
{public:
KD_KmfEncoder(); // 긢긚긣깋긏?
~KD_KmfEncoder();
bool SetKmfInfo( const KMF_INFO & kmf_info );
private:
_KmfEncoder *context;
};class KD_KmfDecoder : public KD_KmfLib
{
public:
enum EN_FORMAT
{
FORMAT_ILLEGAL,
FORMAT_3G2
};
typedef struct _DECODE_INFO
{
unsigned frame_no;
unsigned sample_offset;
unsigned sample_count;
} DECODE_INFO;
KD_KmfDecoder(); ~KD_KmfDecoder();
bool GetT3gData( VAL_DATA & t3g_data ); //t3g(3g2)긢??(OUT)private:
_KmfDecoder *context;
};#endif // __KMFCODEC_H
MFC DLL需要 AFX_EXT_CLASS导出引入的时候除了包含头文件,还需要加入相应的.lib文件。
===============
一般的win32动态链接库
打错了,不好意思
你这样也行?把这三个类都导出类;__declspecl(dllexport)
你用depends看一下,dll中是否真的全部导出了这三个类
class _KmfEncoder;
class _KmfDecoder;
没有导出来,如果DLL没有导出来的话,就没有办法了