DSP

MFC工程exe转换成dll

2019-07-13 16:51发布

/*******************************************************************************/ .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 编译信息(errorwarning信息)文件,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引入到工程中。