Visual Studio 2008 中程序路径配置 .

摘要:
Visual Studio 2008环境变量的配置调试Visual Studio 2008程序时,通常需要将一些动态链接库加载到项目中,以便您可以依赖第三方库进行程序调试。在开发过程中,VisualStudio如何链接这些lib和dll文件?在Visual Studio全局设置中,将dll所在的目录添加到PATH:通过Visual Studio菜单==˃工具==˃选项==˃项目和解决方案==˃VC++目录,在下拉框中选择“可执行文件”,然后添加dll所在路径。

Visual Studio 2008 环境变量的配置(改为:Visual Studio 2008 中程序路径配置 更合理)

在调试 Visual Studio 2008 程序时,经常有一些动态链接库(即 dll 文件)需要加载到工程里,这样才能依赖第三方库进行程序调试。

这些动态链接库,往往都是测试版本或是开发中的版本,或者会有若干个版本;这个时候,如果直接把 dll 所在目录加到 PATH 里,则会有潜在冲突的危险;如果直接拷贝到 Visual Studio 的目录下,假如测试工程太多,每次有新版本的动态链接库更新时,你需要更新若干次,拷贝、粘贴苦不堪言。

在开发过程中,究竟怎样来让 Visual Studio 链接这些 lib 及 dll 文件会比较好呢?

总体上来说,有几种方法可以改变 Visual Studio 的环境变量设置:

  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 ==> Select Configuration ==> Configuration Properties ==> Debugging ==> Working directory 里填上 dll 所在目录,这样当在调试程序时,Visual Studio 会把当前工作目录切换到这个目录下,从而会自动读取本目录下的 dll 文件。

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

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

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

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

    这样就可以把 $(TargetDir)\DLLS 临时添加到该工程所属的系统 PATH 里。 注:这个方法也常常用来在自己的工程中使用自己定义的环境变量(见我的另一篇http://write.blog.csdn.net/postedit/7291815

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

注:本文撰写时参考了 StackOverflow 上的讨论话题:How do I set a path in visual studio?

1.1 小议c++文件流中文件路径

在论坛中闲逛时,经常发现有朋友调试c/c++文件流的代码时,遇到文件路径的问题。下来我结合自己的经验,一起探讨一下。

1.1.1 文件路径的基本概念

OS的文件系统是一个树状结构,有目录、文件的概念

windows系统的例子:

E:\myprograme\BBG\include\bbg_stl>tree

E:.

│ bbg_stl_config.h

├─bbg_list

│ bbg_list.h

├─bbg_alloc

│ bbg_allocpool.h

│ bbg_alloc_adapter.h

│ bbg_construct.h

│ bbg_simple_alloc.h

│ bbg_allocator.h

│ bbg_uninitialized.h

├─bbg_common

│ bbg_export.h

│ bbg_common.h

├─bbg_iterator

│ bbg_iterator.h

├─bbg_vector

│ bbg_vector.h

├─bbg_type

│ bbg_type_traits.h

└─bbg_algorithm

bbg_algorithm.h

linux 系统的例子

yes@yes-desktop:~/myprograme$find /home/yes/myprograme -type f

/home/yes/myprograme/main

/home/yes/myprograme/test.c

/home/yes/myprograme/tt-v4.7.zip

/home/yes/myprograme/main.cpp

/home/yes/myprograme/test

yes@yes-desktop:~/myprograme$

1.1.1.1 相对路径

“.” 一个“点”代表是当前目录所在的路径。对应着windows示例中的路径是:“E:\myprograme\BBG\include\bbg_stl

“..” 两个“点”代表,相对于当前目录的上一层目录路径。对应着windowss示例中的路径是:“E:\myprograme\BBG\include

UNIX家族、LINUX系统上,“.”和“..”的含义和windows是一样的。这两个路径称为相对路径。

当然类似 “..\ \BBG\include” 也是相对路径

1.1.1.2目录分隔符的问题

从上面的两个示例中,可以发现windows系统的目录分隔符是“\”,而linux系统的目录分隔符是“/”

1.1.1.3绝对路径

在windows系统中,以盘符开头的路径叫做绝对路径,比如:

E:\myprograme\BBG\include

而在linux系统中,“/”开头的路径叫做绝对路径,比如:

“/home/yes/myprograme/test

注意:“/”是UNIX家族、LINUX所有目录的根目录。

1.1.2 C++文件流的应用

先以几个例子开头吧。

//示例 1

std::ofstream test_1("test_1.txt");

test_1 << "hello world" << std::endl;

test_1.close();

//示例 2

std::ofstream test_2(".\\test_2.txt");

test_2 << "hello world" << std::endl;

test_2.close();

//示例 3

std::ofstream test_3("..\\test_3.txt");

test_3 << "hello world" << std::endl;

test_3.close();

//示例 4

std::ofstream test_4("d:\\test_4.txt");

test_4 << "hello world" << std::endl;

test_4.close();

说明:

1、上面示例1、示例2是一样的,代表当前路径下面的文件test_1.txt 和test_2.txt。

2、示例3,是相对于当前路径的上一层目录下面的文件test_3.txt。

3、示例4,是绝对路径,就是d:盘下面的 test_4.txt。

4、在用VS调试的时候,当前路径就是 VS工程文件所在的路径。

5、如果是没有在调试状态下运行,当前路径就是“可执行文件”(.exe)或者是“动态库”(dll)所在的路径。

现在分别对示例代码进行说明一下,

例如我上面的示例代码保存在下面文件中:

D:\我的文档\Visual Studio 2005\Projects\Test\Test\test\test2.cpp

我的工程文件所在的路径如下:

D:\我的文档\Visual Studio 2005\Projects\Test\Test\Test.vcproj

那么在用VS调试的时候,

示例1和示例2中的 test_1.txt 和 test_2.txt

就在D:\我的文档\Visual Studio 2005\Projects\Test\Test目录下面

示例3中的test_3.txt在D:\我的文档\Visual Studio 2005\Projects\Test\目录下面。

示例4中的test_4.txt在D:根目录下面

如果我们不是VS调试,直接执行可执行文件,比如,我的可执行文件的路径是:

D:\我的文档\Visual Studio 2005\Projects\Test\debug\ Test.exe

那么,

示例1和示例2中的test_1.txt 和test_2.txt

就在D:\我的文档\Visual Studio 2005\Projects\Test\debug目录下面

示例3中的test_3.txt在D:\我的文档\Visual Studio 2005\Projects\Test目录下面。

示例4中的test_4.txt在D:根目录下面

Windows路径分隔符的说明:

在之前不是说过,windows的路径分隔符用“\”吗?但是上面的最后三个示例,怎么都用“\\”呢?

那是因为在字符串中,“\”是一个转义字符表示,必须“\\”才能表示一个“\”字符。

from:http://blog.csdn.net/jtop0/article/details/7573490

免责声明:文章转载自《Visual Studio 2008 中程序路径配置 .》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇最新的一波Vue实战技巧,不用则已,一用惊人拷贝obsidian的markdown到anki, 处理图片和语法高亮下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python程序打包成.exe----pyinstaller工具

1. 环境 windows 2. 安装 准备文件:PyWin32 or pypiwin32  运行如下安装命令:  pip install pyinstaller==3.0 不要使用3.2版本,编译完成后会报Runtime Error, R6034错误. 3.0版本无此问题。 3. 打包 把.py或.pyw文件拷贝到pyinstaller所在目录 执行命令...

Debian中安装MySQL服务器

在Debian中安装MySQL服务器是很方便的,使用apt-get命令即可完成。   apt-getinstall mysql-server mysql-client mysql-server是服务器程序,mysql-client是客户端程序。我们可通过客户端程序来管理服务器,也可通过一些开源 的GUI程序来维护服务器,如phpmyadmin,mysql...

git命令手册

以下内容是我在学习和研究Git时,对Git操作的特性、重点和注意事项的提取、精练和总结,可以做为Git操作的字典,方便大家查阅; 备注:本文会不断更新完善; 目录 一. 语法格式描述 二. git环境变量存放的3个位置 三. 配置 1. 用户信息 2. 查看配置信息 3. 文本编辑器 4. 差异分析工具 四. 获取帮助 五. Gi...

CentOS基础命令大全

CentOS基础命令大全 1.关机 (系统的关机、重启以及登出 ) 的命令 shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours:minutes & 按预定时间关闭系统 shutdown -c 取消按预定时间关闭系统 shutdown -r now 重启...

MySQL8.0官方文档学习

InnoDB架构 下面的架构里只挑选了部分内容进行学习 内存架构(In-Memory Structures) Buffer Pool Buffer Pool是内存中的一块区域,InnoDB访问表和索引的时候缓存这些数据。buffer pool使得经常使用的数据直接从内存读取,加快了数据处理。在专用的服务器上,会给buffer pool分配80%的物理内存...

Memcached--分布式缓存安装教程

Memcached的Windows版本在这里下载http://code.google.com/p/memcached/wiki/PlatformWindows(或http://memcachedproviders.codeplex.com/),最高的版本是1.4.4,但是已经很难在网上下载到。不过http://www.couchbase.com/对Memc...