我创建了一个MFC DLL 工程,输出文件选择的在项目-》属性-》配置属性下的常规选项下的配置类型选择的是“动态库(.dll)”
在工程里添加了一个类,在类的声明前加上了 AFX_EXT_CLASS宏
编译通过后lib文件只有1k多,dll 1M多(DEBUG版)(是不是有点小啊,我看到的例子几十K的DLL,的lib已有几十K啊)在另一个工程中使用,把lib和dll文件拷贝到工程目录下,静态加载这个DLL 方法是我在类的头文件上加了
#pragma comment(lib,"Mylib.lib")
可是编译后连接时报连接错误错误号2001,2019,好像是找不到类中函数的实现。
为什么啊?是不是我生成的lib文件有问题啊。
如果我在dll工程中选择输出静态库,这个lib文件可以使用。
在工程里添加了一个类,在类的声明前加上了 AFX_EXT_CLASS宏
编译通过后lib文件只有1k多,dll 1M多(DEBUG版)(是不是有点小啊,我看到的例子几十K的DLL,的lib已有几十K啊)在另一个工程中使用,把lib和dll文件拷贝到工程目录下,静态加载这个DLL 方法是我在类的头文件上加了
#pragma comment(lib,"Mylib.lib")
可是编译后连接时报连接错误错误号2001,2019,好像是找不到类中函数的实现。
为什么啊?是不是我生成的lib文件有问题啊。
如果我在dll工程中选择输出静态库,这个lib文件可以使用。
解决方案 »
- VC 剪切板问题
- GETCURSEL()出问题了?
- 做一个空号检测软件,请大家提点思路给我
- 谢谢哪位能告诉我如何在VC++6.0下读取3DMAX图象文件?
- 谁能提供十六进制字符串转换成二进制字符串的函数或方法?
- 快来抢分!!有关图形打印的问题
- 我用SETWINDOWTEXT后怎么把光标定在文字末尾
- CSDN大不如前了!
- 一个工程中, A include B.h,B又 include c.h
- 参加讨论者给分:vc++6.0企业版的补丁(for win98)哪儿有下?怎么安装?
- 我想把动态加载dll和得到其中函数的功能写成一个子函数,可是在接口方面“关于函数指针类型”如何设计?
- 我用一组图片做成一部AVI片段,会涉及到编码器么?
这是为什么啊 AFX_EXT_CLASS 怎么什么都没有...........
class _declspec(dllexport)CFunction : public CObject
{
public:
CFunction();
virtual ~CFunction();
int Add(int a, int b);
char* Link(char* stra , char* strb);
};dll cpp
int CFunction::Add(int a ,int b)
{
return a + b;
}char* CFuntion::Link(char* stra, char* strb)
{
return strcat(stra, strb);
}调用
把Function.h加到工程里面
加上 #pragma comment(lib,“DLLpro。lib”)
在其他文件包含该头文件
声明一个对象
CFunction m_cMyFunction
调用
int a = 10;
int b = 10;
int c = cMyFunction.Add(a,b);
结果 c = 20 调试在CFunction里面的Add函数传近的参数正确char* stra[100];
char* strb[100];
memset(stra,'\0',100);
memset(strb,'\0',100);
strcpy(stra,"0123456789");
strcpy(stra,"abcdefg");
stra = cMyFunction.Link(stra,strb);
结果 stra = 0123456789abcdefg 调试时在CFunction里面的Link函数传近的参数字符串为空
但如果在Link函数里加上
char* temp[100];
memset(temp,'\0',100);
strcpy(temp,stra);
拷贝后的temp = 0123456789
char strb[100];
char temp[100];
上面的代码变量声明写错了