Visual studio 配置

解决方案

一个解决方案的文件结构:


.sln        项目目录         debug   release

其中,debug与release放置最终生成的dll或exe,项目目录下包含


头文件   源文件    debug     release    .proj等

项目debug与release只放置编译的中间结果obj

路径

General->outputdirectory 确定输出目录,即为OutDir

Linker->general->outputfile 确定具体的输出文件名称

Linker->advanced->inport libraty可以设置dll的导入库lib,不大好用..

Debugging->command,确定调试时候启动的文件名,通常为outputfile

Debugging->Workingdirectory,调试时候的当前工作目录(只适用于vs调试),调试时可以获得当前目录下的dll等

VC++目录

可执行目录:包含可执行文件的目录,通常是名字叫bin的文件夹,存放了.exe、.dll文件,对应这环境变量中的PATH( 可执行程序的查找路径)

包含文件:对应了系统环境的INCLUDE变量,文件夹下通常包含的都是一些头文件.h或者.c、.cpp文件;

引用文件目录:则对应LIBPATH目录,通常指向使用#Using指令在代码中引用的程序集和模块(c#中的引用);

库文件目录:对应LIB环境变量,其文件夹下通常包含的是.lib这样的静态库;

排除目录:      是指再依赖文件目录下的一些文件可能混淆真正必须的文件,那么我们就需要使用这个目录来剔除不需要的文件避免出错;

外部lib/dll

通常来说,由于dll并非直接合并至应用中,Visual Studio 链接外部dll 文件配置方式可以有:

1.  直接添加到系统的 PATH变量里:

方法最简单直接,坏处是会影响全局的 PATH 设置,尤其是包含着大量测试用 dll 时。

2.  在 Visual Studio 全局设置里,把 dll 所在目录添加到 PATH 里:

通过 Visual Studio 菜单 ==> 工具 ==> 选项 ==> 项目和解决方案 ==> VC++目录,在下拉框里选择"可执行文件",然后把 dll 所在路径添加进去。

3.  直接把所有 dll 拷贝到 Visual Studio 工程目录下,或是拷贝到生成可执行文件的文件夹(默认情况下是Debug 或 Release 目录)下:

这个方法也很简单,但是当你有若干个工程时,你每次更新 SDK 及其 dll 文件,你就要把所有的工程都更新,这个不符合文件唯一性的工程性准则。

4.  在调试程序时,让 Visual Studio 帮你切换当前工作目录到 dll 相应的目录下:

在 Visual Studio ==> Project ==> Properties ==> SelectConfiguration ==> Configuration Properties ==> Debugging ==> Workingdirectory 里填上 dll 所在目录,这样当在调试程序时,Visual Studio 会把当前工作目录切换到这个目录下,从而会自动读取本目录下的dll 文件。

这个方法的优点很明显,简单!副作用也很明显,在你切换了当前工作目录后,你可能会找不到程序的配置文件,在程序里写的诸如"./config.ini"全部都找不到了;另外,你要把所有的dll 都放到这个工作目录里,否则一样会提示说找不到 xxx.dll 的问题。

5.  最后一个方法,也是我认为最好的一个方法,在 VisualStudio 工程属性里把一个目录临时添加到 PATH 环境变量里:

MSDN 上也有类似的介绍:How to: SetEnvironment Variables for Projects,方法很简单,在"工程属性" ==> "调试" ==> "环境"里,添加类似如下所示的内容:

PATH=%PATH%;$(TargetDir)\DLLS

这样就可以把 $(TargetDir)\DLLS 临时添加到该工程所属的系统 PATH 里。

开发时可以根据项目的实际情况,灵活选用以上方法。

DLL 文件有两类:

1 标准的 DLL 函数库,需要在 VB 中声明并调用函数。 一般情况下,它与应用在同一路径下,或放在一些特殊文件路径。

我们常说的系统 API 就属于这一类。

2 ActiveX DLL,需要注册才能使用。但它带来的好处是,它可以放在任意目录下。VB 所生成的 DLL 属于这一类。

导入库

导入库而言,其实际的执行代码位于动态库中,导入库只包含了地址符号表等,确保程序找到对应函数的一些基本地址信息

有了导入库,调用dll时候,只要包含对应的头文件,可以接调用函数,而不需要使用LoadLibrary+GetProcAddress手动调用dll中的函数

应用程序链接DLL文件

如果应用程序使用LoadLibrary显式链接,那么在这个函数的参数中可以指定DLL文件的完整路径。如果不指定路径,或是进行隐式链接,Windows将遵循下面的搜索顺序来定位DLL:

1. 包含EXE文件的目录,                             2. 进程的当前工作目录,

3. Windows系统目录,                                 4. Windows目录,

5. 列在Path环境变量中的一系列目录。

第三方库

在程序开发中,很多时候需要用到别人开发的工具包,如OpenCV和itk。一般而言,大部分是使用对类进行声明的头文件和封装了类的链接库(静态lib或动态dll)。

如果要使用这些类,需要在文件中包含头文件的名字,如#include
“cv.h”。但这个并不够,因为这个文件一般来说不在当前目录下,有两种方法解决这个问题。

一,将所包含的头文件复制到当前目录下,这个比较有局限性,因为如果头文件太多,这样比较麻烦。

二,将头文件所在的路径包括进去,即添加包含(include)文件目录。两种方法:

A.     依次打开“项目——属性——配置属性——C++——常规——附加包含目录”中加入所有的路径。这里需要注意的是路径必须指向头文件所在的子文件夹,而不能直到父文件夹就结束;每个路径不需要加上双引号,输入了之后,vs2008会自动加上双引;如果是多个路径,路径直接用“;”隔开。

B.    [菜单]“工具->选项->项 目和解决方案->C++ 目录”,选择对应平台,然后添加所需“包括文件”目录。

除了头文件以外,也需要告诉编译器,类在哪里实现的,即封装类的链接库在哪里,这样程序才能执行工具包中的函数。

首先需要将链接库的路径输入vs2008,即添加库(libs)文件目录。两种方法:

A.     依次打开“项目——属性——配置属性——链接器——常规——附加库目录”中加入链库的路径。

B.    [菜单]“工具->选项->项目和解决方案->C++ 目录”,选择对应平台。然后添加所需“库文件”目录,即添加编译所需要(依赖)的
lib 文件 。在“项目——属性——配置属性——链接器——常规——输入——附加依赖项”中加入链接库的名字,多个lib用空格隔开。(等同于“#pragma comment(lib, “xxx.lib”)
”语句)。

Pragma comment

例如:pragma comment ( lib,"wpcap.lib" )

表示链接wpcap.lib这个库。和在工程设置里写上链入wpcap.lib的效果一样,不过这种方法写的 程序别人在使用你的代码的时候就不用再设置工程settings了。告诉连接器连接的时候要找ws2_32.lib,这样你就不用在linker的lib设置里指定这个lib了。

原文地址:https://www.cnblogs.com/resibe-3/p/8232920.html

时间: 2024-11-05 20:39:54

Visual studio 配置的相关文章

为 Visual Studio 配置 Git 源代码管理工具

使用 Visual Studio 可以配合 Git 工具做版本管理.也可以直接将工程同步到 GitHub 上.配置过程非常简单. 首先你要安装 GIt,安装和配置步骤见 安装 Git,Windows 上只要替换其中的安装步骤,其他类似. 在 Visual Studio 安装插件 Git Source Control Provider 然后在 tools->options->source control 中配置源代码管理,将默认的修改为 Git Source Control Provider 配

Visual Studio 配置Winpcap环境

WinPcap 4.0.1在线中文手册 Start 本文以Visual Studio 2013和WinPcap 4.1.3作为示例,对32位和64位Win7通用 1.下载并安装WinPcap运行库 http://www.winpcap.org/install/default.htm 一些捕包软件会捆绑安装WinPcap,MentoHust也会附带WinPcap,这种情况下一般可以跳过此步. 2.下载WinPcap开发包 http://www.winpcap.org/devel.htm 解压到纯英

Visual Studio配置MySql数据库

MySQL Connector/C++ is available as a static or dynamic library to use with your application. This section describes how to link the library to your application. MySQL Connector/C++能做为项目的静态或动态库,这章节就是描述如何链接该库到你的项目中. Note To avoid potential crashes, th

visual studio 配置OpenGL环境

首先在网上下载一个GLUT工具包. glut.zip,大约一百多kb. 解压之后得到这么几个文件: 将glut.h复制到C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include. 将glut.lib和glut32.lib复制到C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib. 将glut.dll和glut32.dll复制到C:\Windows\System32还

Visual Studio 配置 Avalon 自动补全

以VS2013为例: 1.关闭 Visual Studio 2.打开 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Packages\schemas\html 文件夹 3.删除 CommonHTML5Types.bin 4.打开 commonHTML5Types.xsd,以防万一,先备份再修改 5.打开文件找到此节点:<xsd:attributeGroup name="commonHTML5coreAttribute

【单元测试】NUint使用详解及Visual Studio配置

阅读目录 什么是单元测试? 为什么使用单元测试? NUint使用详解: 示例 属性 断言 简单测试 VS配置: External Tools Visual Nunit 2010 NUnit Test Adapter 后记 什么是单元测试? 单元测试(Unit Testing)是针对最小的可测试软件元素(单元)的,它所测试的内容包括单元的内部结构(如逻辑和数据流)以及单元的功能和可观测的行为.通俗一点讲,就是我们编程的时候,编写的一个测试方法用于检测功能是否正确的代码段,通常而言,一个单元测试是用

Visual Studio 配置OpenGL

http://blog.csdn.net/joeblackzqq/article/details/6956959 里讲的挺清楚的.不过如果是64位系统的话DLL文件要放在c:\windows\syswow64下

在visual studio 2010中调用ffmpeg

本文来自:http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html 最近几天一直在折腾ffmpeg,在网上也查了许多资料,费了不少劲,现在在这里和大家分享一下. 一.准备工作 本来是想自己在windows下编译ffmpeg生成lib.dll等库文件的,但是折腾好久总是出错,于是果断放弃.幸好网上已经有了编译好的版本,可以拿过来直接用,网址为http://ffmpeg.zeranoe.com/builds/.我们需要的是32-bit Builds (

Visual Studio 2015+CUDA8.0+CUDNN5配置Caffe-windows(BLVC)

综合  来源:Angle_Cal  2016-12-19 17:32  624℃  0评论 BLVC版本的Caffe-windows已经支持Visual Studio 2015,下面的配置过程是综合了其他人的经验而且验证过的,可以确保有效. 下载Caffe-Windows(BLVC) 下载地址:GitHub 下载好解压缩即可. 安装VS2015,CUDA,CUDNN,Anaconda,CMake VS2015 安装请自行完成,需要注意的是: ①如果你以前安装有早起的VS,那么安装VS2015可能