warning C4273: dll链接不一致

VS2003 IDE 常见问题及解决方法
本文档详细介绍了在使用 Visual Studio 2003 过程中遇到的各种常见问题及其解决方案,包括但不限于 DLL 导出问题、编译输出乱码、链接错误、调试问题等,并提供了具体的配置步骤。

方法1: 选择项目->属性->预处理器->预处理定义, 增加:HYCOMMONWINAPI_EXPORTS

方法2:

就是在

#ifdef HYCOMMONWINAPI_EXPORTS

#define HYCOMMONWINAPI_API __declspec(dllexport)

#else

#define HYCOMMONWINAPI_API __declspec(dllimport)

#endif

前面增加 #define HYCOMMONWINAPI_EXPORTS

其实这两种方法都是增加定义

方法3:在你的dll cpp文件中把

#define HYCOMMONWINAPI_EXPORTS

加在#include <接口文件.h>

的前面

方法4:右击dll工程 -- 属性,打开属性页,展开:配置属性 -- C++ --预处理器,在预处理器定义的最后面填入:_AFXEXT,再次编译则搞掂。

以上方法逐一试下,不知道能不能帮到你。另外这种问题最好去优快云社区去问比较好,百度上牛X的人比较少,我就经常去优快云。

非常郁闷的是,这个问题在relaese dll时又会出现,而且,上面的第4种解决方式没有作用,其它的几种方式暂时不甚了解到底怎么操作,因为第3种方法按它的做,出错

--------------------------------------------------------------------------------------------------------

VS2003 IDE中常见问题【转】

VS2003 IDE 笔记

我在安装Microsoft Visual Studio.Net的时候,总是出现这样的提示:“安装程序检测到另一个程序要求计算机重新启动。必须重新启动计算机后才能安装Visual Studio.Net系统必备。系统重新启动后,您需要重新启动安装程序。单击“确定”重新启动。单击“取消”退出安装程序,以后再安装。”然后我就单击“确定”重新启动电脑,待系统启动完毕后,重新启动安装程序,结果上述提示再次出现,又是重新启动电脑,然而还是这样的提示,无法安装。请高手指点。

我的操作系统是WINXP SP2的,请问到底是什么原因?

解决办法:在注册表删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\pendingfilerenameoperations 然后再装就可以!

项目:常规-》配置类型(.exe .dll .lib 生成文件 实用工具)

项目:system->子系统(windows console)

项目:C/C++-》预处理器-》与处理器定义(预定义一些宏,如:WIN32 _DEBUG _CONSOLE)

启用扩展指令集:

项目:C/C++-》代码生成(启用增强指令集 2003支持SSE SSE2)

2007-6-28

这几天vc2003的编译输出显示的中文都是乱码,搞得我真不爽。原来是上次做的控制台命令程序修改了控制台的代页码936(中文)=》437(西文)。

并且应用到所有的console窗口。

但为什么会影响到编译的输出就不得而知了。

2007-9-13

附加××目录

头文件目录: 项目:C/C++ 》常规 》附加包含目录

库文件目录: 项目:链接器 》常规 》附加库目录

设置输出目录:(和工作目录)

项目:配置属性 》链接器 》 导入库 (如:$(OutDir)/cgloverd.lib )

项目:配置属性 》常规 》输出目录 (如..\..\bin)

如果要更改输出exe的名称可以这样:

项目:配置属性 》链接器 》输出文件 (如:..\..\bin/文件名.exe)(即 输出目录/文件名)

这样你可以把所有共享的dll放在..\..\bin中,然后应用程序编译链接后自动放到..\..\bin中以实现共享dll

(另外 如果出现如下错误:无法启动调试.无法启动程序“。。。”,系统找不到指定文件,就是因为未设置输出文件,可以如上添加输出exe)

如果你要应用程序的目录为其所在的目录(即 输出目录),就要设置

项目:配置属性 》调试 》工作目录 (值同于 输出目录(如:..\..\bin));

[比如加载资源,用到文件路径,也是基于工作目录的]

[这个可能在用 打开文件对话框有用,比如你设置 exe输出到..\..\bin,那么默认的工作目录就和 exe所目录不一样,那么你设置的 打开对话框的默认路径

在..\..\bin 下的exe 和 你刚编译链接即刻出现的exe 下是不一样的 ,所以你设置 工作目录 同 输出目录一样,工作目录设置对 你刚编译链接即刻出现的exe 的工作目录 产生了影响]

============================================================================

2007-10-8

设置pdb文件目录(程序数据库文件)

项目:配置属性 》链接器 》调试 > 生成程序数据库文件(如:$(IntDir)/$(ProjectName).pdb)其中 $(IntDir)为中间目录

============================================================================

2007-10-8

设置lib文件目录(导出库目录)

项目:配置属性 》链接器 》高级 >导入库 (如:lib\cglover.lib)

============================================================================

2007-9-18

DLL,出现warning:“。。。”dll 链接不一致

原因:项目:配置属性 》C/C++ 》命令行 中的所有选项有指定 /D "CGLOVER_EXPORTS"(这里环境自动指定的导出符号)

#ifdef LOVER_EXPORTS //这里出错 =》CGLOVER_EXPORTS

#define CG_EXPORT __declspec(dllexport)

#else

#define CG_EXPORT __declspec(dllimport)

#endif

2007-9-18

DLL, 出现链接错误:无法打开文件“clock.def”

原因:这里的错误是clock.def的路径错误,以致找不到。

解决: 项目:配置属性 》链接器 》 输入   》模块定义文件:路径/cglover.def

也可以 项目:配置属性 》链接器 》 命令行 》在附加选项中添加: /DEF: "路径/clock.def"

2007-9-20

使用tinyxml.lib出现了与 一些 Runtime-lib 重定义的链接错误

原因:我想可能是 tinyxml不支持 多线程。

解决:项目:配置属性 》C/C++ 》代码生成运行时库 改为 单线程(/ML).

也可以采用 忽略指定库(这里为多线程的库):

项目:配置属性 》链接器 》输入》忽略指定库 (如:msvcrt.lib(多线程DLL)

2007-9-20

当使用模块定义文件(.def)时,

我们会在.def中写:( LIBRARY 导出的dll名)

但由于在一个dll中只允许一个.def文件,所以我们这时无法区别对待 Debug和Release版DLL,因为这是导出的.lib文件中填写的是.def指定的DLL名,

比如(MyD.lib 和 My.lib 中认定的都是.def定义的(My.lib),虽然我们能导出MyD.dll和My.dll.

解决:将 LIBRARY后面的去掉(有省事 有实惠,干吗还要写导出dll名呢)

==============================================================================================

2007-9-26

debug时出现链接错误:

libcpd.lib(xdebug.obj) : error LNK2019: 无法解析的外部符号 __malloc_dbg ,该符号在函数 "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z) 中被引用

libcpd.lib(_tolower.obj) : error LNK2001: 无法解析的外部符号 __malloc_dbg

libcpd.lib(xdebug.obj) : error LNK2019: 无法解析的外部符号 __free_dbg ,该符号在函数 "void __cdecl operator delete(void *,struct std::_DebugHeapTag_t const &,char *,int)" (??3@YAXPAXABU_DebugHeapTag_t@std@@PADH@Z) 中被引用

而且当使用<fstream>时才出现这个错误

另外使用Release时没错误。

经检查 项目 》 配置属性 》C/C++ 》 代码生成》运行时库 》

发现 Debug时使用的是:单线程(/ML) Release时使用的也是:单线程(/ML)

将Debug的改为:单线程调式(/MLd)

好像是上次发现程序中使用的Tinyxml库不支持 多线程运行库 ,改为 单线程的运行库,但debug的没改为调试版本的

==============================================================================================

2007-9-26

输出dll后能够让你选择测试程序,若要改为不使用,如下:

项目:配置属性 》 调试 》 命令:中的 字符串 就指定了 测试程序 路径名文件名,去掉即可。

==============================================================================================

vc6->vc7的系列问题及解决方法-1 zz2006-07-19 09:57最近由于工作需要,把项目从vc6升级到vc7(vc.net2003)。升级过程遇到些问题,记录于此。

1. 编译时出现:WINVER not defined. Defaulting to 0X0501 (Windows XP and Windows .NET Server)

这个问题是因为没有指定工程要使用的平台SDK的版本。

Minimum system required Macros to define

Windows Server 2003 family _WIN32_WINNT>=0X0502

Windows XP _WIN32_WINNT>=0X0501

Windows 2000 _WIN32_WINNT>=0X0500

Windows NT 4.0 _WIN32_WINNT>=0X0400

Windows Me _WIN32_WINDOWS=0X0490

Windows 98 _WIN32_WINDOWS>=0X0410

Internet Explorer 6.0 _WIN32_IE>=0X0600

Internet Explorer 5.01, 5.5 _WIN32_IE>=0X0501

Internet Explorer 5.0, 5.0a, 5.0b _WIN32_IE>=0X0500

Internet Explorer 4.01 _WIN32_IE>=0X0401

Internet Explorer 4.0 _WIN32_IE>=0X0400

Internet Explorer 3.0, 3.01, 3.02 _WIN32_IE>=0X0300

解决办法:

属性,C/C++,命令行,附加项中添加 /D _WIN32_WINNT=0x0501 (因为我是在xp下工作的所以是0x0501)

2. Link时出现:LINK : warning LNK4075: 忽略”/EDITANDCONTINUE”(由于”/INCREMENTAL:NO”规范)

这个问题是因为在vc6中,工程使用的增量编译。

解决办法:

属性,链接器,常规,启动增量链接 选择 是(INCREMENTAL)

3. 编译时出现:warning C4129: “U” : 不可识别的字符转义序列

error C3847: 通用字符中的错误符号;必须使用十六进制数字

原因:为开发全球通用的应用程序,.NET Framework 使用 Unicode UTF-16(Unicode 转换格式,16 位编码形式)来表示字符。在某些情况下,.NET Framework 在内部使用 UTF-8。引入通用字符名称的格式是 \u#### 或 \U########。

解决办法:

//#include MAKEPATH(MAIN_IMAGE_PATH, FunUtil\\Unit_star.txt)

#include “..\\ImageData\\ML128160\\FunUtil\\Unit_star.txt”

4. 链接时出现:LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit 已经在 MSVCRTD.lib(MSVCR71D.dll) 中定义 等类似错误

原因:

Run-Time Library

?Run-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。

我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。

CRun-Time Libraries实现ANSI C的标准库。VC安装目录的CRT目录有C Run-Time库的大部分源代码。 CRun-Time Libraries有静态库版本,也有动态链接库版本;有单线程版本,也有多线程版本;还有调试和非调试版本。?动态链接库版本:

/MD Multithreaded DLL 使用导入库MSVCRT.LIB

/MDd Debug Multithreaded DLL 使用导入库MSVCRTD.LIB?静态库版本:

/ML Single-Threaded 使用静态库LIBC.LIB

/MLd Debug Single-Threaded 使用静态库LIBCD.LIB

/MT Multithreaded 使用静态库LIBCMT.LIB

/MTd Debug Multithreaded 使用静态库LIBCMTD.LIB若要使用此运行时库 请忽略这些库

单线程 (libc.lib) libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib

多线程 (libcmt.lib) libc.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib

使用 DLL 的多线程 (msvcrt.lib) libc.lib、libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib

调试单线程 (libcd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib

调试多线程 (libcmtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib

使用 DLL 的调试多线程 (msvcrtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib

解决方法:

属性,链接器,输入,忽略指定库 libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib (这是我需要忽略的,你可以根据你工程的实际情况选择。)

Microsoft (R) Windows Debugger Version 6.12.0002.633 X86 Copyright (c) Microsoft Corporation. All rights reserved. *** wait with pending attach Symbol search path is: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols Executable search path is: ModLoad: 00400000 00563000 E:\Code\Study\QTCode\QTStudyLoad\build-xml-Desktop_Qt_5_15_2_MinGW_32_bit-Debug\xml.exe ModLoad: 77b80000 77d24000 C:\Windows\SYSTEM32\ntdll.dll ModLoad: 778e0000 779d0000 C:\Windows\System32\KERNEL32.DLL ModLoad: 75a70000 75c8c000 C:\Windows\System32\KERNELBASE.dll ModLoad: 772b0000 7736f000 C:\Windows\System32\msvcrt.dll ModLoad: 13ce0000 13dba000 C:\Windows\SYSTEM32\winahframe32.dll ModLoad: 11eb0000 125a0000 C:\Windows\SYSTEM32\tsafedoc2.dll ModLoad: 779d0000 77b6d000 C:\Windows\System32\USER32.dll ModLoad: 77370000 773d3000 C:\Windows\System32\WS2_32.dll ModLoad: 77150000 77168000 C:\Windows\System32\win32u.dll ModLoad: 75c90000 75d4e000 C:\Windows\System32\RPCRT4.dll ModLoad: 75d50000 75d73000 C:\Windows\System32\GDI32.dll ModLoad: 75d80000 75dfb000 C:\Windows\System32\ADVAPI32.dll ModLoad: 77640000 77720000 C:\Windows\System32\gdi32full.dll ModLoad: 762c0000 76336000 C:\Windows\System32\sechost.dll ModLoad: 773e0000 7745b000 C:\Windows\System32\msvcp_win.dll ModLoad: 68a80000 6911a000 C:\Qt\5.15.2\mingw81_32\bin\Qt5Core.dll ModLoad: 61fc0000 625f1000 C:\Qt\5.15.2\mingw81_32\bin\Qt5Widgets.dll ModLoad: 76d10000 76e30000 C:\Windows\System32\ucrtbase.dll ModLoad: 76750000 76d05000 C:\Windows\System32\SHELL32.dll ModLoad: 77460000 77543000 C:\Windows\System32\ole32.dll ModLoad: 76ed0000 77150000 C:\Windows\System32\combase.dll ModLoad: 77720000 777b6000 C:\Windows\System32\OLEAUT32.dll ModLoad: 777c0000 777d9000 C:\Windows\System32\IMAGEHLP.dll ModLoad: 75520000 75593000 C:\Windows\SYSTEM32\WINSPOOL.DRV ModLoad: 66e00000 66e44000 C:\Qt\5.15.2\mingw81_32\bin\Qt5Xml.dll ModLoad: 6eb40000 6eb63000 C:\Qt\5.15.2\mingw81_32\bin\libgcc_s_dw2-1.dll ModLoad: 6fe40000 6ffc3000 C:\Qt\5.15.2\mingw81_32\bin\libstdc++-6.dll ModLoad: 75390000 753a9000 C:\Windows\SYSTEM32\MPR.DLL ModLoad: 730e0000 730f4000 C:\Windows\SYSTEM32\NETAPI32.dll ModLoad: 6fa90000 6fab6000 C:\Windows\SYSTEM32\dwmapi.dll ModLoad: 75630000 75638000 C:\Windows\SYSTEM32\VERSION.dll ModLoad: 6fac0000 6fb34000 C:\Windows\SYSTEM32\UxTheme.dll ModLoad: 75420000 75445000 C:\Windows\SYSTEM32\USERENV.dll ModLoad: 73ac0000 73ae8000 C:\Windows\SYSTEM32\WINMM.DLL ModLoad: 64b40000 64b54000 C:\Qt\5.15.2\mingw81_32\bin\libwinpthread-1.dll ModLoad: 72ae0000 72aea000 C:\Windows\SYSTEM32\CRYPTBASE.DLL ModLoad: 72f30000 72f3b000 C:\Windows\SYSTEM32\NETUTILS.DLL ModLoad: 73070000 7308d000 C:\Windows\SYSTEM32\SRVCLI.DLL ModLoad: 01060000 0177d000 C:\Qt\5.15.2\mingw81_32\bin\Qt5Gui.dll ModLoad: 6dbd0000 6ddb0000 C:\Windows\SYSTEM32\d3d11.dll ModLoad: 6db00000 6dbc2000 C:\Windows\SYSTEM32\dxgi.dll ModLoad: 75a40000 75a65000 C:\Windows\System32\IMM32.DLL ModLoad: 13520000 13cd1000 C:\Windows\SYSTEM32\winahdcore32.dll ModLoad: 765f0000 76635000 C:\Windows\System32\SHLWAPI.dll ModLoad: 766a0000 7674f000 C:\Windows\System32\COMDLG32.dll ModLoad: 77170000 771f7000 C:\Windows\System32\shcore.dll ModLoad: 72ed0000 72f23000 C:\Windows\SYSTEM32\OLEACC.dll ModLoad: 74c10000 74c9d000 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.19041.1110_none_c0da534e38c01f4d\COMCTL32.dll ModLoad: 76420000 7647f000 C:\Windows\System32\bcryptPrimitives.dll ModLoad: 11000000 1124b000 C:\Windows\SYSTEM32\dtframe32.dll ModLoad: 11d60000 11d8c000 C:\Windows\SYSTEM32\TIjtDrvd32.dll ModLoad: 11250000 112b8000 C:\Windows\SYSTEM32\dtsframe32.dll ModLoad: 74bb0000 74c02000 C:\Windows\SYSTEM32\mswsock.dll ModLoad: 772a0000 772a6000 C:\Windows\System32\psapi.dll ModLoad: 03560000 037ab000 C:\Windows\SYSTEM32\windlgctl32.dll ModLoad: 6fb40000 6fd50000 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_a8625c1886757984\COMCTL32.dll ModLoad: 02fb0000 02fb6000 C:\Windows\SYSTEM32\MSIMG32.dll ModLoad: 037b0000 03917000 C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.19041.2130_none_d94f5177e1062327\gdiplus.dll ModLoad: 6fa20000 6fa2a000 C:\Windows\SYSTEM32\WinUsb.dll ModLoad: 6f990000 6fa14000 C:\Windows\SYSTEM32\mf.dll ModLoad: 6f5d0000 6f92f000 C:\Windows\SYSTEM32\MFCORE.DLL ModLoad: 777e0000 778da000 C:\Windows\System32\CRYPT32.dll ModLoad: 77260000 7729b000 C:\Windows\System32\CFGMGR32.dll ModLoad: 76240000 76259000 C:\Windows\System32\bcrypt.dll ModLoad: 753b0000 753f4000 C:\Windows\SYSTEM32\powrprof.dll ModLoad: 6f590000 6f597000 C:\Windows\SYSTEM32\ksuser.dll ModLoad: 73a30000 73a3f000 C:\Windows\SYSTEM32\kernel.appcore.dll ModLoad: 6f480000 6f586000 C:\Windows\SYSTEM32\mfperfhelper.dll ModLoad: 73220000 7322d000 C:\Windows\SYSTEM32\UMPDC.dll ModLoad: 75e00000 76239000 C:\Windows\System32\setupapi.dll ModLoad: 745a0000 74baa000 C:\Windows\SYSTEM32\windows.storage.dll ModLoad: 741e0000 74207000 C:\Windows\SYSTEM32\Wldp.dll ModLoad: 11d90000 11ea2000 C:\Windows\SYSTEM32\TMailHook.dll ModLoad: 14f30000 150e0000 C:\Windows\SYSTEM32\winncap332.dll ModLoad: 119f0000 11b1b000 C:\Windows\SYSTEM32\TAuxMod32.dll ModLoad: 66460000 66484000 C:\Windows\SYSTEM32\hlink.dll ModLoad: 71120000 7134d000 C:\Windows\SYSTEM32\iertutil.dll (c4ec.9b40): Unknown exception - code c0000602 (!!! second chance !!!) eax=0076fa60 ebx=00000000 ecx=00000000 edx=00000000 esi=0076fa10 edi=0076fa60 eip=68a91120 esp=0076fd40 ebp=00000000 iopl=0 nv up ei pl nz ac po nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000212 *** WARNING: Unable to verify timestamp for C:\Qt\5.15.2\mingw81_32\bin\Qt5Core.dll *** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Qt\5.15.2\mingw81_32\bin\Qt5Core.dll - Qt5Core!Zls6QDebugRK23QOperatingSystemVersion+0x3d0: 68a91120 83ec0c sub esp,0Ch
最新发布
07-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值