VC++DLL库项目配置属性常用设置2024.04.24

本文详细描述了如何在VS2019中配置C++项目,包括解决方案文件结构、不同平台的配置选项、库项目设置(如输出目录、预处理器定义、链接器设置等)、多项目之间的依赖关系,以及从Win32迁移到x64平台的步骤。
摘要由CSDN通过智能技术生成

一、概述

我还在用VS2019,没用更新的版本。

我做了5年以上Linux下的C、C++(gcc)开发,也做了5年以上Windows下的C++ MFC(VS)开发。我也做过3年以上Python开发(Python 3.6以上,Linux、Windows都做)。

VS中,方案Solution文件是.sln,方案Project下的项目文件是.vcxproj,用C++项目举例。

.sln文件所在目录为SolutionDir,.vcxproj所在目录为ProjectDir

本文配置的设置,在一个多DLL C++项目+EXE项目相互依赖的方案中,在Win32及x64平台都验证通过了。 

二、配置属性

1、常规页内容

配置属性界面,右击某个项目选“属性”,打开后界面通常这样:

标红框是配置Configuraition,一般还没发布就选Debug吧。

标红2框平台Platform,如果是以前老的机器,或者老的项目,选Win32,新的,选x64。分别对应32位、64位x86机器。

本文以Win32为图例。x64也类似的。

配置属性、标红4常规页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

  • 输出目录,即OutDir,$(SolutionDir)/Bin/,如果SolutionDir下有一个Bin子目录。DLL和.exe一起也放在Bin下。
  • 中间目录,即IntDir,填$(Platform)/$(Configuration)/,这里的Platform目录在ProjectDir下,即完整意思是$(ProjectDir)/$(Platform)/$(Configuration)/。
  • 目标文件名,$(ProjectName)D,尾缀带个D,以示为Debug版本对应的目标文件名。这个$(ProjectName)D是不带.exe、.dll等文件扩展名后缀的。
  • 配置类型,动态库(.dll)。因为该项目是DLL库。

剩下其它的都为VS自动默认设置就可以了。

2、高级页内容

高级页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

  • 使用调试库,选是。
  • MFC的使用,选“在共享 DLL 中使用 MFC”,没选静态啊啥的。
  • 字符集,即CharSet,因为要支持中文汉字,因此选“使用多字节字符集”,没选Unicode啥的。
  • 剩下其它的都为VS自动默认设置就可以了。

3、调试页内容

调试页中各项内容,都为VS自动默认设置就可以了。

4、VC++目录页内容

VC++目录页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

  • 包含目录,$(VC_IncludePath);$(WindowsSDK_IncludePath);..\..\CommonLib\include;C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_86\include。

其中,$(VC_IncludePath);$(WindowsSDK_IncludePath)是VS自动给的。

..\..\CommonLib\include,是我的公共SDK或第三方SDK库代码目录。无此类SDK库的,不需要这个。

而C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_86\include,是因为要使用Python+C++混编,需要Python包含目录环境。不是Python+C++混编的项目,不需要这个。并且,这是Win32平台,如果x64平台,需要指定为C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\include。

  • 库目录,$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86;C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_86\libs。

$(NETFXKitsDir)Lib\um应该是VS自动加的,我没加过,是DotNet(.NET framework SDK)相关的库,通常在这里,

C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\Lib\um\

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_86\libs,是因为要使用Python+C++混编,需要Python库目录环境。不是Python+C++混编的项目,不需要这个。并且,这是Win32平台,如果x64平台,需要指定为C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\libs。

此页中的其它设置中_x86字样不用处理,是Win32平台时VS自动选的,如果x64平台,VS会自动选_x64字样的设置值。

剩下其它的都为VS自动默认设置就可以了。

5、C/C++的常规页内容

C/C++的常规页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

  • 附加包含目录,../Include;../Include/GridCtrl;%(AdditionalIncludeDirectories)。

因为该项目的目录组织是这样的:

 也就是提供给这个库外部的接口头文件,在Include子目录,实现的源文件、内部文件,放在Src子目录下,Src子目录就是ProjectDir。

所以附加包含目录有../Include。

至于../Include/GridCtrl这样类似的,如实际有,则加,没有就省略。

剩下其它的都为VS自动默认设置就可以了。

6、C/C++的优化页内容

C/C++的优化页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

优化页中各项内容,都为VS自动默认设置就可以了。作为一个Debug配置,这些设置内容基本上我没动。

7、C/C++的预处理器页内容

C/C++的预处理器页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

  • 预处理器定义,我填了WIN32;_WINDOWS;_DEBUG;_AFXDLL;PYAPP_DLL;%(PreprocessorDefinitions)。

WIN32,可以不加。我那是因为一个老项目,#define了一个WIN32,很多代码用它处理了,懒得清理,就没删它。

通常x86 Win32平台,VS自己定义了_WIN32,因此WIN32不用特意定义。另外,x64平台时,对应的VS自己定义了_WIN64,并且注意,并且同时定义了_WIN32。

PYAPP_DLL,也是因为老项目的接口头文件中用到了,懒得清理,就没删它。

至于_WINDOWS;_DEBUG;_AFXDLL这几个,就放在吧。_AFXDLL和选了在共享 DLL 中使用 MFC有相关性,但确切的因为过去有些日子了,我记不清了,就留着吧。

 剩下其它的都为VS自动默认设置就可以了。

8、C/C++的代码生成页内容

C/C++的代码生成页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

 

  • 运行库,设置为多线程调试 DLL (/MDd)。

剩下其它的都为VS自动默认设置就可以了。

9、C/C++的语言页内容

C/C++的语言页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

语言页中各项内容,都为VS自动默认设置就可以了。

10、C/C++的预编译头页内容

C/C++的预编译头页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

 

  • 预编译头,通常选“使用”。
  • 预编译头文件,如果是老式的StdAfx.h.cpp,那就填它。否则填你用的实际预编译头。

其实吧,有些项目你指定了预编译头“使用”,build时会出问题,那就到这里来改成不使用。

剩下其它的都为VS自动默认设置就可以了。

11、C/C++的输出文件页及其它页内容

C/C++的输出文件页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

输出文件页及其它页中各项内容,都为VS自动默认设置就可以了。

12、链接器的常规页内容

链接器的常规页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

  • 输出文件,填$(OutDir)/$(TargetName)$(TargetExt),这些是VS自动给的。

OutDir是前面说的,输出目录,即OutDir,$(SolutionDir)/Bin/。

TargetName是前面说的,目标文件名,$(ProjectName)D。

TargetExt,本例中就是.dll。

  •  附加库目录,填$(SolutionDir)/Lib;%(AdditionalLibraryDirectories)。

因为方案目录下建了个Lib/子目录,build时,所有编译出的库的*.lib都会被放到这个子目录下。

  • 链接库依赖项,选是。这是VS自动给的。

剩下其它的都为VS自动默认设置就可以了。

13、链接器的输入页内容

链接器的输入页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

  • 附加依赖项,./HtmlHelpWin32/htmlhelp.lib;%(AdditionalDependencies),填你用到的额外库。

比如HtmlHelp.lib是个例子。而且Win32、Win64库版本要各自制定。

  • 模块定义文件,填Win32.def。

里面是库需要export出的函数、类方法的符号。

像这些内容。

VS这方面很烦的。Linux下gcc不需要搞这些。

另外,这个类似Win32.def文件是编Win32平台时用的,如果是Win64平台,需要另外再整一个Win64.def文件。你说VS是不是很烦吧。

剩下其它的都为VS自动默认设置就可以了。

13、链接器的清单文件页内容

链接器的清单文件页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

清单文件页及其它页中各项内容,都为VS自动默认设置就可以了。

13、链接器的调试页内容

链接器的调试页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

  • 生产调试信息,选生成调试信息 (/DEBUG)。

剩下其它的都为VS自动默认设置就可以了。

13、链接器的高级页内容

链接器的高级页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

高级页1

高级页2

  • 导入库,填$(SolutionDir)/Lib/$(TargetName).lib。

因为前面提到过附加库目录$(SolutionDir)/Lib,方案目录下建了个Lib/子目录,build时,所有编译出的库的*.lib都会被放到这个子目录下。所以链接时,从该子目录下导入。

剩下其它的都为VS自动默认设置就可以了。

13、链接器的其它页内容

链接器的其它页中各项的内容,如果是库项目(Lib、DLL),我习惯填为如下。

 

 其它页中各项内容,都为VS自动默认设置就可以了。

13、其它页内容

截图红框里其它页中各项的内容,就VS自动设置的就行,我不经常设置,这些关系都不太大,不会引起编译、链接、build失败。

三、多项目时的依赖设置

一个方案包括多个DLL库项目,加上一个EXE可执行启动项目,那么需要设置依赖。

右击方案,点项目依赖项或生成顺序,在弹出的界面中可以勾选设置。

四、x64平台项目的设置

点击配置管理器,里面可以新建x64配置,然后可以选从现有的Win32作为模板建立,然后稍微修改就行。

其它的和Win32的配置设置上的差异,前面差不多都提到过了。

剩下的代码处理差异,那就是另外回事情了。

  • 20
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: vc90动态是指Microsoft Visual Studio 2008中所使用的动态链接DLL)。这些DLL文件是用于支持和运行使用VC++编写的应用程序的必要文件。在2008年的版本中,vc90动态是指所需的用于运行VC++ 9.0版本的DLL文件。 vc90动态vc 2008中所需要的dll免安装.rar的意思是提供了用于2008年版的Visual Studio所需的vc90动态DLL文件的压缩文件,这些DLL文件可以免安装直接使用。 通常情况下,开发人员在创建VC++应用程序时,需要将所需的DLL文件打包到应用程序的文件夹中,以确保应用程序能够正常运行。然而,如果vc90动态vc 2008中所需要的DLL文件已经被压缩到rar文件中,并且可以免安装使用,那么开发人员可以通过直接解压文件并将DLL文件放置到应用程序的目录中,而不需要进行繁琐的安装流程。 使用vc90动态vc 2008中所需要的DLL文件免安装.rar,开发人员可以更加方便地将这些DLL文件添加到他们的项目中,确保应用程序的正确运行。这种方法适用于那些希望快速部署和交付应用程序的开发人员,而不需要进行繁琐的安装过程。 总而言之,vc90动态vc 2008中所需要的DLL文件免安装.rar提供了一种简便的方法,开发人员可以直接使用所需的DLL文件,而不需要进行繁琐的安装操作,以确保他们的VC++应用程序能够正确运行。 ### 回答2: vc90动态是指用于Microsoft Visual Studio 2008中的Visual C++ 9.0版本的动态链接。这些动态链接是用来实现C++程序的编译和运行所需的依赖。通常情况下,在部署或者分享VC++ 2008程序时,需要将这些动态链接dll文件打包并安装在用户的计算机上。 然而,有时候我们可能需要在没有安装VC++ 2008的计算机上运行程序,或者由于某些原因无法进行正常安装。在这种情况下,我们可以使用vc90动态vc 2008中所需要的dll免安装.rar文件来解决这个问题。 该rar文件中包含了VC++ 2008所需的所有vc90动态dll文件。通过将这些dll文件解压到程序所在的目录即可实现程序的正常运行,而无需进行正式的安装。 需要注意的是,使用免安装dll文件的方法仅适用于特殊情况,并不推荐长期使用。正式环境下,应该按照正常的安装流程,将VC++ 2008动态进行安装和配置。 综上所述,vc90动态vc 2008中所需要的dll免安装.rar文件提供了一种临时解决方案,用于在没有安装VC++ 2008或无法进行正常安装的情况下运行程序。使用方法是将rar文件中的dll文件解压到程序所在目录,以保证程序能够正常编译和运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值