小妹初学DLL,各位大侠帮帮忙

ld8888 2005-09-01 11:59:23
小妹建立了一个WIN32 Dynamic-link library 工程,里面就建了一个类
编译错误:
--------------------Configuration: DLLFC32 - Win32 Debug--------------------
Compiling...
Dict.cpp
Linking...
nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in libcpmtd.lib(delop.obj)
Debug/DLLFC32.dll : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

DLLFC32.dll - 2 error(s), 0 warning(s)
...全文
116 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gohappy_1999 2005-09-01
  • 打赏
  • 举报
回复
using namespace std;去掉这句呢?
ld8888 2005-09-01
  • 打赏
  • 举报
回复
好像不是BOOL的问题,我在类的头文件里包含了好多文件
include <map>
#include <iostream>
#include <fstream>
#include <string>
#include "afx.h"
using namespace std;

好像是string和afx.h有冲突。去掉一个include就可以了
但是我要用到两个库啊,怎么办呢?
aceouter 2005-09-01
  • 打赏
  • 举报
回复
库冲突导致的链接错误。
在工程属性Link页中
Category->Input
在Ignore libraries填入要忽略的库,比如:
libcpmtd.lib
i_noname 2005-09-01
  • 打赏
  • 举报
回复
在对象中已定义符号

以修饰形式显示的给定 symbol 被多次定义。

可能的原因

不慎同时与单线程库和多线程库链接。确保应用程序项目文件只包括适当的库,并且任何第三方库已适当创建了单线程或多线程版本。
在也使用 /clr 时混合静态库和动态库。
该符号为封装函数(通过用 /Gy 编译创建),包含在多个文件中,但在各编译间已改变。重新编译所有包含 symbol 的文件。
以不同的形式在不同库中的两个成员对象中定义了该符号,并且使用了这两个成员对象。
某个绝对符号被定义两次,而每次定义的值不同。
头文件声明并定义了变量。可能的解决方案有:
在 .h 中声明变量:extern BOOL MyBool;,然后在 .c 或 .cpp 文件中向它分配:BOOL MyBool = FALSE;。
将变量声明为 static。
将变量声明为 selectany。
当将 uuid.lib 与定义 GUID 的其他 .lib 文件(例如 oledb.lib 和 adsiid.lib)一起使用时。例如:
oledb.lib(oledb_i.obj) : error LNK2005: _IID_ITransactionObject
already defined in uuid.lib(go7.obj)
若要修复,请将 /FORCE:MULTIPLE 添加到链接器命令行选项,并确保 uuid.lib 是引用的第一个库。

ld8888 2005-09-01
  • 打赏
  • 举报
回复
还是没有用。
快乐鹦鹉 2005-09-01
  • 打赏
  • 举报
回复
#include 的顺序交换一下试试
ld8888 2005-09-01
  • 打赏
  • 举报
回复
去掉错误就更多了

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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