C++环境下DLL和LIB文件目录及名称修改

DLL工程,Debug版本下输出文件由basetool.dll basetool.lib 改为basetoolD.dll basetoold.lib 需设置:

1、配置属性-常规-目标文件名 $(ProjectName) 加d

2、配置属性-连接器-常规-输出问件 由 加d

3、配置属性-连接器-高级-导入库,设置文件名$(OutDir)$ProjectName)d.lib

4、如果有导出文件,.def文件中也一定要修改导出库的名字

LIBRARY      "BaseTool"

变为

LIBRARY      "BaseToold"

关于相对目录

相对目录是相对某个文件而言的,例如在 VC 项目属性配置附加包含目录、附加库目录则是相对 *.dsp 、 *.vcproj 文件而言的;在某个 *.c 、 *.cpp 文件中使用 #include 包含命令,是相对这个 *.c 、 *.cpp 文件而言的。

当前目录是可见的,一般直接引用文件名(夹)

对于子文件夹可以添加“./” 。

.. :父目录

../include :父目录下的 include 目录

../.. :祖父目录

http://www.cnblogs.com/include :祖父目录下的 include 目录

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

<pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word;">C/C++附加包含目录和VC++目录包含目录区别?
连接器常规附加库目录和VC++目录库目录区别?
连接器-输入-附加依赖项
</pre><pre class="best-text mb-10" name="code" style="margin-top: 0px; margin-bottom: 10px; white-space: pre-wrap; word-wrap: break-word; padding: 0px; font-family: arial, 'courier new', courier, 宋体, monospace; background-color: rgb(255, 252, 246);">附加依赖项 是指输入项,如某个.LIB文件a.lib,<span style="line-height: 1.5;">添加到附加依赖项,你的LIB文件被真正包含进来了。等同于“#pragma comment(lib, "winsock.lib") ”语句</span>
附加库目录 是你用 #pragma comment(lib,"a.lib")的时候;此时就搜索a.lib的路径列表就包含这个路径。

把它所在的目录添加到附加库目录里面 :仅仅包含目录只是告诉IDE,搜索没有指定路径的库文件时,也搜索这里。

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

VC配置基础点击打开链接

一.预处理宏

1. 通用宏

VC6.0 中:

Project Setting à C/C++ à Preprocessor
definitions

VC2005 中:

项目属性 à 配置属性 à C/C++ à 预处理器定义

WIN32 :指明是 Window 32 位系统的编译器,一般用作平台识别。

_MBCS/_UNICODE :指明该工程使用的字符集(多字节字符集 /UNICODE )。

在 VC6.0 的 “Project Setting à C/C++ à Project
Options” 处将会有 /D "_MBCS" 或 /D "_UNICODE" 开关。

在 VC2005 的 “ 项目属性 à 配置属性 à 常规 à 项目默认值 à 字符集 ” 中选择 “ 使用多字节字符集 ” 或 “ 使用 Unicode 字符集 ” ;在 “ 项目属性 à 配置属性 à C/C++ à 使用 UNICODE 响应文件 ” 中选择 “ 是 ” 或“ 否 ” 。在 “ 项目属性 à 配置属性 à C/C++ à 命令行 ” 处将会有 /D
"_MBCS" 或 /D "_UNICODE" /D "UNICODE" 开关。

当项目中的文件具有 UNICODE 路径(例如中文路径)时,应在 “ 项目属性 à C/C++ à 常规 ” 和 “ 项目属性 à 链接器 à 常规 ” 中开启 “ 使用 UNICODE 响应文件 ” 开关。

_CONSOLE/_WINDOWS :指明应用程序的类型(控制台程序 /Windows 窗口应用程序)。

_DEBUG/NDEBUG :指明编译版本( Debug/Release )。

除此之外, VC 不同的项目类型,有一些特定的宏,以在编译器区分项目类型。

2. 特定宏

( 1 ) Win32 Static Library 项目

VC6.0 中:

Project Setting à C/C++ ( Category : General ) à Preprocessor
definitions : _LIB

如果选择了 MFC Support 则 _WINDOWS,_AFXDLL

VC2005 中:

项目属性 à 常规 à 配置类型 à 静态库 (.lib)

项目属性 à C/C++ à 预处理器 à 预处理器定义: _LIB

( 2 ) Win32 Dynamic-Link Library 项目

VC6.0 中:

Project Setting à C/C++ à Preprocessor
definitions : _WINDOWS,_USRDLL,DLL_EXPORTS

VC2005 中:

项目属性 à 常规 à 配置类型 à 动态库 (.dll)

项目属性 à C/C++ à 预处理器 à 预处理器定义: _WINDOWS;_USRDLL;DLL_EXPORTS

( 3 ) MFC DLL 项目

<1>Regular DLL with MFC statically linked (带静态链接 MFC 的规则 DLL )

VC6.0 中:

Project Setting à C/C++ à Preprocessor
definitions : _WINDOWS,_WINDLL,_USRDLL

VC2005 中:

项目属性 à C/C++ à 预处理器 à 预处理器定义: _WINDOWS;_USRDLL

<2>Regular DLL using shared MFC DLL (使用共享 MFC DLL 的规则 DLL )

VC6.0 中:

Project Setting à C/C++ à Preprocessor
definitions : _WINDOWS,_WINDLL,_AFXDLL , _USRDLL

VC2005 中:

项目属性 à C/C++ à 预处理器 à 预处理器定义: _WINDOWS;_USRDLL

<3>MFC Extension DLL ( using shared MFC DLL )( MFC 扩展 DLL )

VC6.0 中:

Project Setting à C/C++ à Preprocessor
definitions : _WINDOWS,_WINDLL,_AFXDLL ,_USRDLL

VC2005 中:

项目属性 à C/C++ à 预处理器 à 预处理器定义: _WINDOWS; _AFXEXT

在 DLL 项目中, _USRDLL 宏表示生成 Export
Lib !

 

关于 VC 编译器预处理宏,参考:

《 Predefined Macros ( VC6.0 )

《 C/C++ Preprocessor
Reference-Predefined Macros
 ( VC8.0 )》

《 What’s
the difference between the WIN32 and _WIN32 defines in C++
 》

 

二.工作目录和控制台程序运行参数

VC6.0 中:

“Project Setting à Debug à Working
directory” 处填写 exe 程序的工作目录。

在 “Project Setting à Debug à Program
argument” 处填写 main 运行参数。

VC2005 中:

在 “ 项目属性 à 配置属性 à 调试 à 工作目录 ” 处填写 exe 程序的工作目录。

在 “ 项目属性 à 配置属性 à 调试 à 命令参数 ” 处填写 main 运行参数。

默认的工作目录为 ProjectDir ,即 *.dsw/*.vcproj 所在目录。

通过编译器启动( Ctrl + F5 )应用程序时,可以将所依赖的 lib 和 dll 库文件所在目录设为工作目录。应用程序执行期间,创建、保存文件将在工作目录中。

工作目录是指当前目录, GetCurrentDirectory() 得到的路径; SetCurrentDirectory 来改变。

运行目录是指 exe 所在路径,可通过 GetModuleFileName() 得到。

三.附加头文件包含

VC6.0 中:

VC6.0 默认 include 包含路径: Tools à Options à Directories à Include
files 。

对于特定项目的头文件包含,在 “Project Setting à C/C++ ( Category : Preprocessor ) à Additional
include directories” 处添加附加头文件目录,相对目录参考 *.dsp 文件。

目录路径不需添加双引号,路径分隔符为 ’/’ 或 ’/’ ,不必考虑反斜杠 ’/’ 的转义。多个路径之间以逗号 分隔。

相应的在 “Project Setting à C/C++ à Project
Options” 中将会出现 “/I” 的包含命令。

VC2005 中:

VC2005 默认 include 包含路径:工具 à 选项 à 项目和解决方案 à VC++ 目录 à 包含文件。

对于特定项目的头文件包含,在 “ 项目属性 à 配置属性 à C/C++ à 常规 à 附加包含目录 ” 处添加附加包含目录,相对目录参考 *.vcproj 文件。

目录路径不需添加双引号,路径分隔符为 ’/’ 或 ’/’ ,不必考虑反斜杠 ’/’ 的转义。多个路径之间以分号 分隔。

相应的在 “ 项目属性 à 配置属性 à C/C++ à 命令行 ” 中将会出现 “/I ” 的包含命令。

关于 #include 的两种包含方式

#include   <std*.h> 为编译器指定的包含路径下的头文件: 即在 VC6.0 中的 “Tools à Options à Directories à Include
files” (对应 VC2005 的 “ 工具 à 选项 à 项目和解决方案 à VC++ 目录 à 包含文件 ” )处指定的包含目录。默认情况下包括

( 1 ) $(VCInstallDir)include ( /Microsoft
Visual Studio /VC98/INCLUDE )

( 2 ) $(VCInstallDir)atlmfc/include ( /Microsoft
Visual Studio /VC98/ATL/INCLUDE 、 /Microsoft Visual Studio /VC98/MFC/INCLUDE )

( 3 ) $(VCInstallDir)PlatformSDK/include ( VC2005 )。

用户也可以自己添加包含路径到此。

对于 “Tools à Options à Directories à Include
files” ( “ 工具 à 选项 à 项目和解决方案 à VC++ 目录 à 包含文件 ” )目录下的文件的包含,一般可使用尖括号包含。系统对尖括号的包含优先到编译器设置的包含路径下定位,再到附加包含目录下进行定位。

#include "MyHeader.h" 为在 “Tools à Options à Directories à Include
files” ( “ 工具 à 选项 à 项目和解决方案 à VC++ 目录 à 包含文件 ” )处人工添加的
包含路径下的头文件或者 附加包含目录下的头文件。

对于编译器提供的标准库函数头文件( “Tools à Options à Directories à Include
files” ( “ 工具 à 选项 à 项目和解决方案 à VC++ 目录 à 包含文件 ” )),一般使用尖括号进行包含声明,当然使用双引号包含也没有错。

对于在 “Tools à Options à Directories à Include
files” ( “ 工具 à 选项 à 项目和解决方案 à VC++ 目录 à 包含文件 ” )处人工添加的
包含路径和附加包含目录下的头文件的包含可以使用尖括号进行包含,但一般使用双引号。

原则上,对于工程或文件可见的包含目录下的头文件包含,使用以上两种包含方式中的任一种都不会出错,主要是它们在搜索目录时的顺序不一样。习惯上使用尖括号包含 标准库函数头文件,使用双引号包含用户自定义头文件。建议除标准 SDK (如 DirectX 等),一般针对具体工程使用附加头文件包含即可,尽量不要去动编译器的 “Tools à Options à Directories à Include
files” (对应 VC2005 的 “ 工具 à 选项 à 项目和解决方案 àVC++ 目录 à 包含文件 ” )作编译器级全局配置。下面的链接库包含处理同此。

External Dependencies 里面显示的是你的工程要用到的头文件,不在你的工程里面,而且也不在 VC 的默认包含路径中。参考:《 VC6.0的
External Dependencies
 》。

四.附加链接库包含

VC6.0 中:

VC6.0 默认 lib 包含路径: Tools à Options à Directories à Library
files

对于特定项目的头文件包含,可以通过以下两步添加附加链接库:

1. 在 “Project Setting à Link ( Category : Input ) à Additional
library path” 处添加附加库目录,相对目录参考 *.dsp 文件。

目录路径不需添加双引号,路径分隔符为 ’/’ 或 ’/’ ,不必考虑反斜杠 ’/’ 的转义。多个路径之间以逗号 分隔。

相应的将会在 “Project Setting à Link à Project
Options” 处同步 “/libpath ” 库包含命令。

2. 在 “Project Setting à Link ( Category : General ) à Object/Library
Modules” 处添加库文件名 YourLib.lib ( 也可在文件中使用 #pragma comment(lib, "YourLib.lib" ) 显式
导入所依赖的静态库),多个库之间以空格 分隔。

相应的将会在 “Project Setting à Link à Project
Options” 处同步包含的库名称。

VC2005 中:

VC2005 默认 lib 包含路径:工具 à 选项 à 项目和解决方案 à VC++ 目录 à 库文件

对于特定项目的库文件包含,可以通过以下两种方式添加附加库目录:

1.

( 1 )在 “ 项目属性 à 配置属性 à 链接器 à 常规 à 附加库目录 ” 处输入附加库目录路径,相对目录参考 *.vcproj 文件。

目录路径不需添加双引号,路径分隔符为 ’/’ 或 ’/’ ,不必考虑反斜杠 ’/’ 的转义。多个路径之间以分号 分隔。

相应的将会在 “ 项目属性 à 配置属性 à 链接器 à 命令行 ” 处同步 “/LIBPATH” 库包含命令。

( 2 )在 “ 项目属性 à 配置属性 à 链接器 à 输入 à 附加依赖项 ” 处添加库文件名 YourLib.lib ( 也可在文件中使用 #pragma
comment(lib, "YourLib.lib") 显式 导入所依赖的静态库),多个库之间以空格 分隔。

相应的将会在 “ 项目属性 à 配置属性 à 链接器 à 命令行 ” 处同步包含的库名称。

2.

在 “ 项目属性 à 配置属性 à 链接器 à 命令行 ” 处添加库文件名 YourLib.lib ( 必要时添加相对目录,保证 YourLib 的可见性)。

五.生成文件目录设置

VC6.0 中:

在 “Project Setting à General à Output
directories” 的 “Output files” 处填写 *.exe 或 *.lib/*.dll 的生成目录,相应在 “Project
Setting à Link (或 Library ) à Output
file name” 处将会同步文件输出路径。相对目录参考 *.dsp 文件。

在 “Project Setting à General à Output
directories” 的 “Intermediate files” 处填写中间文件生成目录。相对目录参考 *.dsp 文件。

VC2005 中:

在 “ 项目属性 à 常规 à 输出目录 ” 处填写输出目录,在 “ 项目属性 à 常规 à 中间目录 ” 处填写中间目录,相对目录参考 *.vcproj 文件。

在 “ 项目属性 à 链接器(或管理员) à 常规 à 输出文件 ” 处填写输出文件路径。

输出目录( OutDir )一般为 $(SolutionDir)$(ConfigurationName)

输出文件( OutputFile )一般为 $(OutDir)/$(ProjectName).exe ( *.lib , *.dll )

说明 

$(SolutionDir) 为 *.sln 文件所在文件夹,尾带 ‘/’ ;

$(ProjectDir) 为 *.vcproj 文件所在文件夹,尾带 ‘/’ ;

$(ConfigurationName) 为 *.sln 的 *.vcproj 文件所在文件夹下的 debug 、 release 文件夹,参考 *.vcproj 文件中的 <Configurations> 配置项。

具体在 “ 项目属性 à 配置属性 à 调试 à 命令 ” 下拉点击 “ 编辑 ” ,展开 “ 宏 (M )>>” ,可以看到很多项目内置宏。

一般的配置为:

输出目录 ( OutDir ): $(ProjectDir)$(PlatformName)/$(ConfigurationName)

中间目录 ( IntDir ): $(OutDir)/Intermediate

输出文件 : $(OutDir)/$(ProjectName).lib(dll 、 exe)

 

六.关于相对目录

相对目录是相对某个文件而言的,例如在 VC 项目属性配置附加包含目录、附加库目录则是相对 *.dsp 、 *.vcproj 文件而言的;在某个 *.c 、 *.cpp 文件中使用 #include 包含命令,是相对这个 *.c 、 *.cpp 文件而言的。

当前目录是可见的,一般直接引用文件名(夹),对于子文件夹可以添加 ”./” 。

.. :父目录

../include :父目录下的 include 目录

../.. :祖父目录

http://www.cnblogs.com/include :祖父目录下的 include 目录

 

七.依赖项目联编

一个解决方案 (dsw 、 sln) 可以创建很多辅助子项目 (dsp 、 vcproj) ,如何设置使在编译主项目的时,先编译所依赖的辅助项目呢?

一般会配置辅助子项目的 OutDir 和主项目相同,这样生成的 lib 或 dll 对于主项目 exe 直接可见。

VC6.0 中:

选择菜单 “Project à Dependencies” 可以选择需要联编的项目。

VC2005 中:

在解决方案资源管理器中右击项目名称,选择 “ 引用 ” 或 “ 项目依赖项 ” 菜单,可选择项目依赖项,并可以设置依赖顺序。

 

八.附加DLL 调试

VC6.0 中:

如果你需要调试的 DLL 是动态装入( LoadLibrary )的,则需要在 “Project
Setting à Debug ( Category : Additional
DLLs ) ” 处添加这个 DLL 文件。

九.导出makefile

VC6.0 中选择菜单 “Project à Export
Makefile” 即可导出 Makefile 文件 *.mak 。

VC6 以后不再支持 makefile 输出了。

参考:《 VC的 MAKE文件的语法》,《 vs6
IDE导出的 makefile使用方法
》,《 教你在 VS2005下写 MakeFile 》

十.代码的编辑与阅读导航

Visual Studio 本身就带有充分的代码组织、编辑、分析以及阅读能力的支持。

VC6.0 和 VC2005 中的 “Edit à Find
in Files” 支持指定项目、工程或文件内的关键字搜索。

VC6.0 的 “Tools à Source
Browser” ,提供对 “Definitions and References” 、 “File Outline” 、 “Base
Classes and Members” 、 “Derived Classes and Members” 、 “Call Graph” 、 “Callers
Graph” 等导航功能支持。

VC2005 右键快捷菜单中支持 “ 查找所有引用 ” ;右键快捷菜单中的 “ 调用浏览器 ” 支持函数调用关系图和被调用关系图的查看。 “ 类视图设置 ” 中支持显示 “ 基类型 ” 、 “ 派生类型 ” 、 “ 继承成员 ” 等功能。

此外,在阅读代码时,我们可以使用书签( Bookmark )来设置锚点,这样就可以实现基于书签的自定义索引导航。

下面介绍常用的编程辅助插件软件及源代码层次结构分析工具软件。

1. Visual
Assist X
是一款非常好的 Microsoft Visual Studio 辅助插件,支持 C/C ++, C #, ASP , Visual
Basic , Java 和 HTML 等语言,能自动识别各种关键字、系统函数、成员变量、自动给出输入提示、自动更正大小写错误、自动标示错误等,有助于提高开发过程的自动化和开发效率。

2 . Windows 下的 Source
Insight
 是一个面向项目开发的程序编辑器和代码导航浏览器, 它还能显示 reference trees , class inheritancediagrams 和 call
trees 。相应的 Linux 下阅读源代码的利器 Source
Navigator
 能很好地解决文件定位和跳转问题。

3 . Rational
Rose
 是利用 UML (统一建模语言)进行分析和设计面向对象软件系统的强大的可视化工具,可以进行项目需求分析、结构规划和生成框架代码,还可以支持从现有系统逆向转出工程代码,生成 Rose 模型的功能。

逆向工程( Reverse Engineer )就是从现有系统的代码来生成模型的功能。通过 Rational Rose 分析已有的代码,可了解代码结构和数据结构,生成类层次关系图、数据模型图和组件图。

十一. VC6 常用快捷键

Alt+F7 : Project Settings

Ctrl+J/K :寻找上一个 / 下一个预编译条件

Ctrl+Shift+J/K :寻找上一个 / 下一个预编译条件并将这一块选定

Ctrl+Tab :当前打开文档和上一次打开文档切换。

Alt+O :头文件与 cpp 文件的交互显示

F12 : Goto definition

Shift+F12 : Goto reference

Ctrl+Home : 文档头

Ctrl+Shift+Home : 选定从当前位置到文档头

Ctrl+End : 文档尾

Ctrl+Shift+End : 选定从当前位置到文档尾

Alt+F8 :自动格式重排

Ctrl+F4 :关闭当前文档

Ctrl+Z/Alt+Backspace : Undo

Ctrl+Shift+Z/Ctrl+Y : Redo

Ctrl+B/Alt+F9 : 编辑断点

Ctrl+Shift+F9 : 去掉所有断点

Ctrl+D : 定位工具条查找输入栏

Alt+F3/Ctrl+F :当前文档 查找

Ctrl+F3 : 查找下一个

Ctrl+Shift+F3 : 查找上一个

Ctrl+H :替换

Ctrl+] :括号匹配

Ctrl+ ↑ : 向上滚屏

Ctrl+ ↓ : 向下滚屏

Ctrl+ ← : 移到前一个单词

Ctrl+ → : 移到后一个单词

Ctrl+Shift+ ← : 选定当前位置到前一个单词

Ctrl+Shift+ → : 选定当前位置到后一个单词

Ctrl+Backspace : 删除当前单词的前半截(以光标为分割)

Ctrl+Del : 删除当前单词的后半截(以光标为分割)

Ctrl+L :剪切当前行

Ctrl+Shift+L :删除当前 行

F2 :上一个书签

Shift+F2 :上一个书签

Alt+F2 :编辑书签

Ctrl + F2 :添加 / 删除一个书签

Ctrl+Shift+F2 : 清除所有书签

时间: 2024-10-24 13:00:14

C++环境下DLL和LIB文件目录及名称修改的相关文章

VS2010 C++环境下DLL和LIB文件目录及名称修改

DLL工程,Debug版本下输出文件由basetool.dll basetool.lib 改为basetoolD.dll basetoold.lib 需设置: 1.配置属性-常规-目标文件名 $(ProjectName) 加d 2.配置属性-连接器-常规-输出问件 由 加d 3.配置属性-连接器-高级-导入库,设置文件名$(OutDir)$ProjectName)d.lib 4.如果有导出文件,.def文件中也一定要修改导出库的名字 LIBRARY      "BaseTool" 变为

VS2010 C++环境下DLL和LIB文件的生成与调试

利用VS2010工具,调试DLL文件的方法现总结如下: 在一个解决方案中生成两个工程,假设MYDLL和MYDLG两个工程,前者是DLL工程,后者DLG调用前边的DLL工程.设置如下: 目录如下:图,本文例子中,DLL文件和EXE文件都生成在下边的这个DEBUG文件中:D:\My Documents\Visual Studio 2010\Projects\MYDLL\Debug,当然,也可以生成在其他文件目录下,只要设置正确即可.     目的:遵循DLL和exe最后生成的文件在一个目录内,且两个

VS-Qt环境下dll

首先,不得不承认的是,Qt中的数据类型使用很方便,当我们的主框架是基于Qt的时候也就没必要刻意追求辅助函数所在的dll是Win32的(如果原功能函数就是只使用标准库及基础类型,那也可以在Qt框架中调用,这不是本篇的重点).我们之所以要使用QtLibrary是不考虑整合旧代码的情况下方便我们编写Qt程序的时候实现界面与功能的分离. 1.创建库 1)创建QtLibrary项目,并进行相关设置. 2)根据需要在图2张选择dll需要的库: 3)输入ClassName,注意,下面两个选项不要勾选,除非想生

CAS服务器集群和客户端集群环境下的单点登录和单点注销解决方案

CAS的集群环境,包括CAS的客户应用是集群环境,以及CAS服务本身是集群环境这两种情况.在集群环境下使用CAS,要解决两个问题,一是单点退出(注销)时,CAS如何将退出请求正确转发到用户session所在的具体客户应用服务器,而不是转发到其他集群服务器上,二是解决CAS服务端集群环境下各种Ticket信息的共享. CAS集群部署 由于CAS Server是一个Web应用,因此可部署在Tomcat等容器中.直接部署CAS集群并使用负载均衡配置后,由于每次访问的CAS Server不固定,会发生通

[C/C++]windows环境下lib和dll的区别和联系(待整理)

c++中共有两种库:1.LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library.(这种方式更灵活,写的程序体积小,但是需要.exe和dll同时发布)2.LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library.(这种方式不是很灵活,因为lib被编译到.exe中,写出的程序体积大,但是只需要发布exe即可,不需要dll文件)共有两种链接方式:

windows环境下lib和dll的区别和联系详细

c++中共有两种库: 1.LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library.(这种方式更灵活,写的程序体积小,但是需要.exe和dll同时发布) 2.LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library.(这种方式不是很灵活,因为lib被编译到.exe中,写出的程序体积大,但是只需要发布exe即可,不需要dll文件) 共有两种链接

.Net 环境下C# 通过托管C++调用本地C++ Dll文件

 综述 : 本文章介绍.Net 环境下C# 通过托管C++调用本地C++ Dll文件, 示例环境为:VS2010, .Net4.0, Win7. 具体事例为测试C++, C#, 及C#调用本地C++Dll文件进行浮点运算效率的一部分. 如果需要查看三者的效率, 请继续阅读下面的文章. a 创建本地CPP类库 1. 创建本地CPP的Dll ---->EfficiencyNativeCPPDLL 2. 点击下一步 注意选择为DLL(D)项, 然后选择完成. 3.书写DLL文件 3.1 Efficie

在VS2008环境下编写C语言DLL,并在C++和C#项目下调用 (转载)

1.编写DLL a)文件--打开--新建项目--Win32,右侧Win32项目,填写好项目名称,点击“下一步”, 应用程序类型选择:“DLL(D)”,附加选项:空项目(E),然后完成. b)编写头文件(edrlib.h): #ifdef __cplusplus   #define EXPORT extern "C" __declspec (dllexport)   #else   #define EXPORT __declspec (dllexport)   #endif      E

msvc下从dll文件创建lib

1.进入msvc命令控制台. 2.生成.def文件 通过pexports或微软编译环境自带的dumpbin.exe导出DLL对应的def文件 方法一: pexports .dll > .def 方法二: dumpbin /exports .dll > .def 其中***代表你的dll的文件名以及要生成的def的文件名. 我推荐使用pexports,因为它导出的def是标准的def格式,可在http://sourceforge.net/projects/mingw/files/MinGW/Ex