依然是链接的问题:...(

tlovexyj 2003-06-18 02:23:55
因为在MFC下用stlport,所以libcmtd.lib和msvcrtd.lib发生冲突,出现xxx重复定义的问题,随即在ignore libraries下加入libcmtd.lib,msvcrtd.lib,编译器又报如下警告:

LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /INCREMENTAL:NO specification
LINK : warning LNK4049: locally defined symbol "_fclose" imported
LINK : warning LNK4049: locally defined symbol "_fread" imported
LINK : warning LNK4049: locally defined symbol "_fopen" imported
LINK : warning LNK4049: locally defined symbol "_strncpy" imported
LINK : warning LNK4049: locally defined symbol "__setmbcp" imported


接下来,程序使用FILE的部分,原来工作正常,现在却会报错了。

真是头疼~
...全文
61 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
tlovexyj 2003-06-21
  • 打赏
  • 举报
回复
up~
tlovexyj 2003-06-20
  • 打赏
  • 举报
回复
依然在(再)试……
谢谢大家关注!
ljseven 2003-06-19
  • 打赏
  • 举报
回复
libcmt。lib是多线程的静态连接,
而msvcrt。lib是动态连接的,它支持单线程和多线程,
为何不用msvcrt.lib 要用静态连接的了
ljseven 2003-06-19
  • 打赏
  • 举报
回复
通过试验,用debug版本用
静态mfc连接 在工程设置link里面加入 /nodefaultlib:"msvcrt.lib" 无警告,无错误。fopen fclose 可用,但是release不行
wocan 2003-06-19
  • 打赏
  • 举报
回复
libcmtd.lib,msvcrtd.lib留一个。
ljseven 2003-06-19
  • 打赏
  • 举报
回复
涔熷彲浠ョ敤fopen锛堬級fclose锛堬級
ljseven 2003-06-19
  • 打赏
  • 举报
回复
通过试验,用静态mfc连接 在工程设置link里面加入 /nodefaultlib:"msvcrt.lib" 无警告,无错误。
ruihuahan 2003-06-19
  • 打赏
  • 举报
回复
libcmtd.lib,msvcrtd.lib不能全都ingore啊!留一个。
曾经的猎狐 2003-06-19
  • 打赏
  • 举报
回复
up
tlovexyj 2003-06-19
  • 打赏
  • 举报
回复
是啊,但是这时就会报我说的警告,而且最要命的是使用fopen/fclose……的地方会报错。
ljseven 2003-06-18
  • 打赏
  • 举报
回复
我试验了一下用动态的mfc连接,在工程设置link里面加入 /nodefaultlib:"msvcrt.lib"
编译会警告但是可以通过
tlovexyj 2003-06-18
  • 打赏
  • 举报
回复
我的静态库确实是用的mt
而我的MFC程序是用的动态mt(因为MFC必须要求动态mt,不然编译报错),然后就报重复定义的警告了。

:...(
coldname 2003-06-18
  • 打赏
  • 举报
回复
我上次也是碰到静态库这样的重复定义问题, 结果发现是我的静态库不是MT编译出来。导致其用在MFC程序有问题。
coldname 2003-06-18
  • 打赏
  • 举报
回复
确信你的静态库使用多线程编译出来的???
tlovexyj 2003-06-18
  • 打赏
  • 举报
回复
55555
还是不行

我再说清楚一点吧:
我写的一个库,用到了stlport、zlib,因为stlport需要/mt,加上用的是static link
然后我另一个MFC的程序,它也只能/mt,用的shared dll,这时就会报我问题里的那些个警告了。

唉。。。
Powerdix 2003-06-18
  • 打赏
  • 举报
回复
在Object/libray Modules中指定顺序:libcmtd.lib msvcrtd.lib
在ignore libraries中指定:libcmtd.lib msvcrtd.lib

试一试

如果用到了MFC,根据情况有可能要加上Nafxcwd.lib

Release版本要去掉后缀d
tlovexyj 2003-06-18
  • 打赏
  • 举报
回复
2 ljseven:
还是不行,依然会报一些_xxx重复定义。
ljseven 2003-06-18
  • 打赏
  • 举报
回复
把使用共享mfc连接改为静态连接就可以了,不需要ignore libraries
whiskers 2003-06-18
  • 打赏
  • 举报
回复
用显示调用动态连接库的办法

typedef int (*DLL_FUNCTION1)(long);
HINSTANCE hDLL;
DLL_FUNCTION1 YourFuncName;


hDLL = ::LoadLibrary("*.dll");
YourFuncName = (DLL_FUNCTION1) GetProcAddress(hDLL, "YourFuncName");
DoubleJiang 2003-06-18
  • 打赏
  • 举报
回复
你没有
#include "stdio.h"吗

16,472

社区成员

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

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

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