关于链接错误.(在线等)

King_of_WOW 2005-06-13 09:08:46
正在链接...
nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new.obj) 中定义
nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(dbgdel.obj) 中定义

这一般是什么原因?
...全文
334 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
modena 2005-06-14
  • 打赏
  • 举报
回复
nafxcwd.lib是你自己的DLL吗?有MT的版本吗?
wuchi 2005-06-14
  • 打赏
  • 举报
回复
阿凉Wlv 2005-06-14
  • 打赏
  • 举报
回复
ding
柯本 2005-06-14
  • 打赏
  • 举报
回复
你可在项目->属性->链接器->命令行->附加选项中加 /force
不过,只能试试,不一定能成
xqk 2005-06-14
  • 打赏
  • 举报
回复
mark
liuzq_78 2005-06-14
  • 打赏
  • 举报
回复
up
King_of_WOW 2005-06-14
  • 打赏
  • 举报
回复
我的是net2003中文

我在链接-》常规里面 不知道你说的force file output 怎么翻译?
greenteanet 2005-06-14
  • 打赏
  • 举报
回复
是不是链接dll的时候出现的错误呢?
柯本 2005-06-14
  • 打赏
  • 举报
回复
如果只是new 重新义的话,可直接用link的/force选项,也许可以解决你的问题
柯本 2005-06-14
  • 打赏
  • 举报
回复
大多DXSDK的例子都用win32的
你还可试试:
就用
#include "afxwin.h"
#include "wxlist.h"
然后,将系统的lib路径放在dxsdk lib的前面
tools->opetions->directories->library files
将dxsdk lib的路径移后
然后:设projects->opetions->linker -> customzie -> 将force file output打勾
King_of_WOW 2005-06-14
  • 打赏
  • 举报
回复
恩 那用win32建窗口程序吗 。。晕啊
柯本 2005-06-14
  • 打赏
  • 举报
回复
感觉用了"wxlist.h"就不能用MFC类了
wxlist.h中
struct __POSITION { int unused; };
typedef __POSITION* POSITION;
而afx.h中定义的是
struct __POSITION { };
typedef __POSITION* POSITION;
如果这样定义,肯定出错,编译通不过(重定义)
#include "wxlist.h"
#include "afxwin.h"
如果这样
#include "afxwin.h"
#include "wxlist.h"
库(LIB)中,__POSITION的大小与不一致(一个为1,一个为4)
-----------------------------------------------------
建议,既用DXSDK,就不要用MFC类了




King_of_WOW 2005-06-14
  • 打赏
  • 举报
回复
//MainFrame.h
#include "afxwin.h"
#include "wxlist.h"

这个顺序似乎不对
King_of_WOW 2005-06-14
  • 打赏
  • 举报
回复
我在最前面包含了afxwin.h
那里面定义了_AFX_H_吧.
gooyan 2005-06-14
  • 打赏
  • 举报
回复
那你在cpp开头加上
#define _AFX_H_就应该可以了.


/* This definition is the same as the POSITION type for MFCs, so we must
*/ avoid defining it twice.

这个定义跟MFC中的POSITION类型定义一样,因此我们必须避免定义两次

#ifndef __AFX_H__
struct __POSITION { int unused; };
typedef __POSITION* POSITION;
#endif

如果没有定义__AFX_H__
那么就定义
struct __POSITION { int unused; };
typedef __POSITION* POSITION;

所以,先#define __AFX_H__
就不会再定义POSITION了
King_of_WOW 2005-06-14
  • 打赏
  • 举报
回复
最新发现

我终于找到重定义的POSITIN的地方了

在DirectShow 的自带文件wxlist.h中有这么几行 大家帮我看看是怎么回事

/* This definition is the same as the POSITION type for MFCs, so we must
*/ avoid defining it twice.

#ifndef __AFX_H__
struct __POSITION { int unused; };
typedef __POSITION* POSITION;
#endif



kingzai 2005-06-13
  • 打赏
  • 举报
回复
PRB:在 MFC 库之前链接 Link C 运行时库时出现 LNK2005 错误

http://support.microsoft.com/?scid=kb;zh-cn;148652&spid=2990&sid=global
King_of_WOW 2005-06-13
  • 打赏
  • 举报
回复
明天来结帐

..
先下了
King_of_WOW 2005-06-13
  • 打赏
  • 举报
回复
请问楼上的 我用到的库有这些Winmm.lib strmbasd.lib quartz.lib strmiids.lib WS2_32.Lib

我把运行库的所有选项都试了一遍 都不行

还是Mtd的抱错最少..
nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new.obj) 中定义
nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(dbgdel.obj) 中定义
error LNK2022: 元数据操作失败(8013118D) : 重复类型(__POSITION)中的布局信息不一致:(0x02000074)。
LINK : fatal error LNK1255: 由于元数据错误,链接失败


谁帮我解决了 我再开个帖子给分


Zhymax 2005-06-13
  • 打赏
  • 举报
回复
可能是你当前工程和你所引用的库使用的运行库(run-time library)不同造成

看一下应用的库和当前工程中的 project setting-〉C/C++ -〉 运行库是否都选用了 debug multithreaded dll 或是 multithreaded dll
加载更多回复(2)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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