当前位置: 首页 > news >正文

北京教育学会网站建设2018年公司网站建设费分录

北京教育学会网站建设,2018年公司网站建设费分录,全网热搜关键词排行榜,什么游戏不用登录直接玩原始链接#xff1a;VC中忽略所有默认库纯Win32 API编译及链接 - 计算机软件编程 - Wangyes Space 我们在用VC编写Windows程序的时候可能会发现一般可执行体#xff08;.EXE#xff09;的文件体积都比较大#xff0c;于是非常羡慕那些使用Win32汇编编写程 序的人#xff0…原始链接VC中忽略所有默认库纯Win32 API编译及链接 - 计算机软件编程 - Wangyes Space   我们在用VC编写Windows程序的时候可能会发现一般可执行体.EXE的文件体积都比较大于是非常羡慕那些使用Win32汇编编写程 序的人因为他们编写的可执行文件非常小。其实应用程序的体积是一方面另外应用程序的部署环境则是需要注意的另一方面这方面我深有体会曾经使用 Visual Studio 2008编译过一个C的Win32程序本地测试正常但是部署到客户机时出现缺少什么动态库于是还要安装Visual C 2008可再发行组件包Visual C 2005 Redistributable Package 这给软件部署带来了一定的麻烦另外对于一个功能比较简单的程序安装如此的组件包可能心里会不好受我们希望对于一些比较简单的应用程序可以直接调用系统提供的API从而降低部署程序的复杂度。 其实对于VC我们可以采用忽略所有默认库的方式避免编译器引入不必要的动态链接库当然你可以使用如下的预编译宏。 #pragma comment(linker, /nodefaultlib)       #pragma comment(linker, /nodefaultlib)实 际上我们还需要在属性的 连接器-清单文件 将 生成清单 改为 否然后选择 清单工具-输入和输出 将嵌入清单改为否在 C/C中选择代码生成将缓冲区安全检查改为否(/GS-)否则编译会出现一个错误设定程序的主入口点。注意上述配置一般在Release下生成 文件也在Release下编译链接Debug可能无法使用如果需要防止Debug模式编译可以使用如下宏命令 #ifdef _DEBUG#error Debug is disabled #endif    //    _DEBUG  #ifdef _DEBUG #error Debug is disabled #endif // _DEBUG另外对于函数入口的重新定义可以使用如下宏以代替属性配置。 #pragma comment(linker,/ENTRY:wWinMainCRTStartup)  #pragma comment(linker,/ENTRY:wWinMainCRTStartup)由 于这里指定使用的宽字符UnicodeAPI调用所以我们将入口点定义为wWinMainCRTStartupANSI版建议定义为 WinMainCRTStartup另外Windows API有两个版本的API接口ANSI版和Unicode版ANSI版主要是为了兼容 Windows 98等旧系统一般ANSI API编译的程序体积比较小但由于现在的基于NT的新的操作系统基本使用的Unicode API相对 而言对于这些系统Unicode API接口的速度要快于ANSI 接口的速度。 入口点做如下定义 #include windows.h HINSTANCE    g_hInst     NULL;int WINAPI SimpleMain(VOID) {     return 0; } VOID WINAPI wWinMainCRTStartup(VOID) {     g_hInst  GetModuleHandle(NULL);     ExitProcess(SimpleMain()); }   #include windows.h HINSTANCE g_hInst NULL; int WINAPI SimpleMain(VOID) { return 0; } VOID WINAPI wWinMainCRTStartup(VOID) { g_hInst GetModuleHandle(NULL); ExitProcess(SimpleMain()); }很多朋友可能还需要获得程序的执行命令行以获得所需要的执行参数我们可以使用GetCommandLine()这个API获得。这里提供一个我写的分离命令的函数。 VOID WINAPI AnalyseCommandLine(const LPTSTR lpOriginal, LPTSTR lpParameter)   {       int i, j, k  0, nCmdLen  lstrlen(lpOriginal);       for(i  nCmdLen; i0; i--)       {           if(*(lpOriginal  i) )           {               for(ji1; j  nCmdLen1; j)               {                   *(lpParameter  k)  *(lpOriginal  j);                   k;               }               break;           }       }          *(lpParameterk)  \0;   }  VOID WINAPI AnalyseCommandLine(const LPTSTR lpOriginal, LPTSTR lpParameter) { int i, j, k 0, nCmdLen lstrlen(lpOriginal); for(i nCmdLen; i0; i--) { if(*(lpOriginal i) ) { for(ji1; j nCmdLen1; j) { *(lpParameter k) *(lpOriginal j); k; } break; } } *(lpParameterk) \0; }具体使用如下 LPTSTR    lpCommand  NULL;   TCHAR    zCmd[MAX_PATH];   lpCommand  GetCommandLine();   AnalyseCommandLine(lpCommand, zCmd);   LPTSTR lpCommand  NULL; TCHAR zCmd[MAX_PATH]; lpCommand  GetCommandLine(); AnalyseCommandLine(lpCommand, zCmd); 理 论上这样可以编译链接了实际上还有很多错误主要是链接方面的。由于我们使用了纯Windows API所以不能使用memset这时可以调用 FillMemoryRtlFillMemory、ZeroMemoryRtlZeroMemory等等这时编译会出现链接错误 是关于 _memset符号链接的实际上我们并没有使用memset那这个错误是怎么产生的呢其实微软重新定义了RtlFillMemory等API并使它 们挂接到memset这个函数下为了我们能够顺利编译我们需要在自己的头文件里做如下处理。 #undef RtlFillMemory   #undef RtlZeroMemory     extern C NTSYSAPI BOOL NTAPI    RtlFillMemory ( VOID *Source1,DWORD Source2,BYTE Fill );     extern C NTSYSAPI BOOL NTAPI    RtlZeroMemory( PVOID Destination, SIZE_T Length);     #define memset(Destination,Fill,Length) RtlFillMemory((Destination),(Length),(Fill))  #undef RtlFillMemory #undef RtlZeroMemory extern C NTSYSAPI BOOL NTAPI RtlFillMemory ( VOID *Source1,DWORD Source2,BYTE Fill ); extern C NTSYSAPI BOOL NTAPI RtlZeroMemory( PVOID Destination, SIZE_T Length); #define memset(Destination,Fill,Length) RtlFillMemory((Destination),(Length),(Fill))下面我们继续我们的编译在链接这里又出现错误。 error LNK2001: 无法解析的外部符号 __imp__InitCommonControls0 error LNK2001: 无法解析的外部符号 __imp__InitCommonControlsEx4跟踪后发现这两个函数InitCommonControls和InitCommonControlsEx由COMCTL32.dll导出参考网上的解决方案加入lib库。 #include commctrl.h  #pragma comment(lib, comctl32.lib)  #include commctrl.h #pragma comment(lib, comctl32.lib)错误依旧经过仔细寻找发现在属性配置里 链接器-输入 在附加依赖项里填入 comctl32.lib编译通过 另外对于空间分配建议参考HeapAlloc、HeapFree等等API函数。 如果大家在操作过程中遇到什么问题欢迎讨论 转载于:https://www.cnblogs.com/Henrya2/archive/2008/12/22/1360012.html
http://www.zqtcl.cn/news/855389/

相关文章:

  • 网站怎么做引流呢济南网站微信
  • 一个域名可以做几个网站吗wordpress左右翻转页面
  • 天津人工智能建站系统软件wordpress主题没有小工具
  • 网站的备案流程图视频制作素材
  • 劳务公司网站建设方案建设促销网站前的市场分析
  • 网络营销优化培训网站seo置顶 乐云践新专家
  • 小说网站搭建教程wordpress后台图片
  • 付网站开发费计入什么科目网站开发的历史
  • 站长素材ppt模板免费下载网站开发视频教程迅雷下载
  • 建设一个网站怎么赚钱南京江北新区房价走势最新消息
  • 一个网站怎么做软件下载互联网投放渠道有哪些
  • 手机网站建设进度环境设计排版素材网站
  • 网站开发众筹地推网推平台
  • 长沙互联网网站建设wordpress标签id在哪里修改
  • 企业网站的建设 摘要大连网站设计策划
  • 做房地产一级市场的看什么网站网络营销外包推广方式
  • 网站建设基本流程包括哪几个步骤网站建设策划书网站发布与推广
  • 徐州整站优化手机网页端
  • 深圳中瑞建设集团官方网站宁波seo快速优化教程
  • 福田网站制作哪家好昆山企业网站建设公司
  • wordpress快六安网站自然排名优化价格
  • 网站的线下推广怎么做的系统官网网站模板下载安装
  • 北京网站优化推广公司企业网站建设费怎么核算
  • 网站建设vps个人如何做网站推广
  • 小语种网站怎么设计网页制作公司 大连
  • 贵港市城乡住房建设厅网站菜鸟教程网站
  • 广州网站建设找哪家免费搭建网站的软件
  • 培训班管理系统 免费太原优化网站排名
  • 上海怎么做网站网站让图片充满屏幕怎么做
  • 哈尔滨营销网站建设wordpress 加载图片不显示