您的位置:首页 > 其它

MFC工程exe转换成dll

2014-01-23 16:35 302 查看
/*******************************************************************************/
.dsp 工程文件,文本格式,不可丢失或损坏

.dsw 工作区文件,丢失或损坏时,可点击.dsp文件打开工程,.dsw文件自动重建

.clw ClassWizard信息文件,ini格式,ClassWizard出问题时可删除它再重建

.map 映像信息文件,编制DLL写.def文件时,若不知道函数导出顺序,可在

Prject / Settings / Link 页中选中“Generate mapfile”,重新build,

  用记事本或其它类似程序打开生成的.map文件,里面可看到函数导出表

.i 在命令行环境下输入:cl ***.cpp /P (注意后面的参数P大小写敏感),

   程序文件夹中会生成.i文件,用记事本或其它类似程序打开,可看到.cpp

   文件经预处理后的结果

.ncb 无编译浏览文件,当自动完成功能(自动显示成员变量列表)出问题时,

   可删除它,build 后自动重建。

其它:

.aps 资源辅助文件,二进制格式

.opt 开发环境参数(如工具条位置)文件

.plg 编译信息(如error和warning信息)文件,html格式

.pch 预编译文件,可加快编译速度,但改文件非常大

.pdb 记录程序相关的数据和调试信息

.**p dll信息文件,编译dll时才会生成

.bsc 用于浏览项目信息,可在

   Prject / Settings / Link 页中勾掉“Generate Browse Info File”,

   禁止生成.bsc文件,以加快编译速度。但若使用Source Browser的话

   就必须有这个文件

/*******************************************************************************/

一、方法 一:更改dsp: *.dsp存放的是工程的一些配置信息
二、方法 二:改配置信息
三、方法 三:新建dll工程,导入cpp文件与资源文件


一、方法 一:更改dsp: *.dsp存放的是工程的一些配置信息

(1) # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102

(2) !MESSAGE "DemoDll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")

(3) !MESSAGE "DemoDll - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")

(4) # ADD BASE CPP /nologo/MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /c

(5) # ADD CPP /nologo/MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /Yu"stdafx.h" /FD /c

(6) # ADD BASE LINK32 /nologo /subsystem:windows /dll/machine:I386

(7) # ADD LINK32 /nologo /subsystem:windows /dll /machine:I386

(8) # ADD BASE CPP /nologo/MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c

(9) # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /Yu"stdafx.h" /FD /GZ /c
(10) # ADD BASE LINK32 /nologo /subsystem:windows/dll /debug /machine:I386 /pdbtype:sept

(11) # ADD LINK32 /nologo /subsystem
(12) 还要把BOOL CDemoDllApp::InitInstance()文件中的:
#ifdef _AFXDLL

Enable3dControls(); // Call this when using MFC in a shared DLL

#else

Enable3dControlsStatic(); // Call this when linking to MFC statically

#endif

给注释掉.


二、方法 二:改配置信息

Project->Project Settings ->C/C++->Project Options :增加/MD
Project->Project Settings ->Link->Project Options :增加/dll
在主文件上,增加DllMain入口,给出导出函数与实现
增加*.def及实现


三、方法 三:新建dll工程,导入cpp文件与资源文件,稍加修改即可,这个最容易,不多说

-------------------------------------
error C1010: unexpected end of file while looking for precompiled header directive.

可能原因为工程中 stdafx.h 未包含。

//

在VC 6.0中编译c++程序时报该错原因为需要一个预编译的文件stdafx.h, 如果不需要编译该头文件的话,只需要打开seting 页面设置中在c/c++栏,选择PreCompiled headers,然后设置第一选项,选择不使用预编译头,解决这个问题。

或者

直接打开dsp工程文件,找到 /Yu"stdafx.h"去掉即可。

//

一般来说,在编译某个文件时,往往发现编译器指向某个源码文件的末尾,并且提示以上信息时,直接在cpp顶上加一项"stdafx.h".

而且不管文件所处是否和stdafx.h文件在同一目录中。编译后即可通过,没必要去修改编译开关。一般而言:预编译功能是解决大量标头文件重复编译的问题。

在stdafx.h头中,我们一般把那些公用的头文件放置在其中。特别是调用dll组件包时,dll引入到工程中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: