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

阿里云多网站什么是网站托管

阿里云多网站,什么是网站托管,自己做的网站如何让百度收录,用dw做网站首页1. 前提 这篇文章记录一下怎么用CMake进行项目管理, 并用C/C和汇编进行混合编程, 为了使用这项技术, 必须在VS的环境中安装好cmake组件 由于大部分人不会使用C/C与汇编进行混合编程的情况。所以这篇文章并不适用于绝大部分人不会对其中具体细节进行过多叙述。只是做一些简单的…1. 前提 这篇文章记录一下怎么用CMake进行项目管理, 并用C/C和汇编进行混合编程, 为了使用这项技术, 必须在VS的环境中安装好cmake组件 由于大部分人不会使用C/C与汇编进行混合编程的情况。所以这篇文章并不适用于绝大部分人不会对其中具体细节进行过多叙述。只是做一些简单的记录 2. 配置 创建一个cmake工程 VS是支持多个工程在一个解决方案中的, 目前使用的是单工程。这是我习惯的目录树: 解释一下其中含义: include: 所有头文件都将放在这个目录下src: 所有源文件都将放在这个目录下out/build: 构建项目所生产的中间文件install: 最终工程所生产的可执行文件以及库文件, 和必须的文件, 这是最终使用部分可以直接打包scripts: 辅助编译链接的脚本 下面我将先用cmake脚本配置一个cpp项目: 首先看一下目录树: CMakeLists.txt编写: # cmake的最低版本要求是3.8 cmake_minimum_required (VERSION 3.8)# 项目名称 project (TestJoke)# 设置默认安装路径 if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install CACHE PATH 默认安装路径 FORCE) endif()# 生成可执行文件, 并使用main.cpp和arthmetic.cpp add_executable(TestJoke main.cpp src/calc/arthmetic.cpp)# 将include/calc包含进头文件目录内 target_include_directories(TestJoke PRIVATE ${CMAKE_SOURCE_DIR}/include/calc)# 生成的目标放到install/bin目录下 install(TARGETS TestJoke DESTINATION bin)# 执行命令TestJoke, 依赖是TestJoke生成, 也就是说TestJoke生成后立马执行TestJoke add_custom_command(TARGET TestJokeCOMMAND TestJoke DEPENDS TestJoke )arthmetic.h编写: #pragma once #ifdef __cplusplus extern C { #endif int add(int iNum1, int iNum2);int sub(int iNum1, int iNum2);int div1(int iNum1, int iNum2);int mul(int iNum1, int iNum2);#ifdef __cplusplus } #endif arthmetic.h编写: #include arthmetic.hint add(int iNum1, int iNum2) {return(iNum1 iNum2); }int sub(int iNum1, int iNum2) {return(iNum1 - iNum2); }int div1(int iNum1, int iNum2) {return(iNum1 / iNum2); }int mul(int iNum1, int iNum2) {return(iNum1 * iNum2); }main.cpp编写: #include windows.h #include cstdio #include cstdlib #include arthmetic.hint main() {printf(%d, add(12, 8));system(pause);return(0); }build.bat脚本编写: echo off:: 保存原本的环境变量 setlocal:: 进入out/build构建目录 set BUILD_PATH%~dp0../out/build/ pushd %BUILD_PATH%:: 以x86 Debug方式构建项目 cmake ../.. -DCMAKE_BUILD_TYPEDebug -G Visual Studio 17 2022 -A Win32 cmake --build . --config Debug :: 将生成内容安装 cmake --install . --config Debug :: 回到原来目录 popd :: 恢复原本的环境变量 endlocal 完成之后进入scripts目录执行build.bat脚本就可以发现执行成功了 执行成功后, 可执行文件被安装到了install/bin/目录下, 构建文件在out/build/目录下生成 下面将进行汇编语言的配置, 首先去masm32下载对应的sdk: 下载masm32 sdk 添加汇编代码后的目录树: stupid.asm内容: .586 .model flat, C option casemap:noneinclude windows.inc include kernel32.inc include user32.inc includelib kernel32.lib includelib user32.lib.data szCap SBYTE 测试, 0 szMsg SBYTE 这是一个测试, 0.code MsgBox PROC pszMsg:PTR SBYTE, pszCap:PTR SBYTEpush MB_OKpush pszCappush pszMsg push NULLcall MessageBoxret MsgBox ENDP END完成之后就可以对cmake进行配置 主要是将masm32 SDK的库文件和头文件加入cmake环境变量中 CMakeLists.txt修改后: # cmakee的最低版本要求是3.8 cmake_minimum_required (VERSION 3.8)# 项目名称 project (TestJoke)# 允许基于masm的Intel汇编 enable_language(ASM_MASM)# 设置默认安装路径 if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install CACHE PATH 默认安装路径 FORCE) endif()# 包含masm32 sdk的头文件目录 include_directories(D:/masm32/include) # 包含masm32 sdk的库文件目录 link_directories(D:/masm32/lib)# 生成可执行文件, 并使用main.cpp和arthmetic.cpp add_executable(TestJoke main.cpp src/calc/arthmetic.cpp src/asm/stupid.asm)# 将include/calc包含进头文件目录内 target_include_directories(TestJoke PRIVATE ${CMAKE_SOURCE_DIR}/include/calc)# 生成的目标放到install/bin目录下 install(TARGETS TestJoke DESTINATION bin)# 执行命令TestJoke, 依赖是TestJoke生成, 也就是说TestJoke生成后立马执行TestJoke add_custom_command(TARGET TestJokeCOMMAND TestJoke DEPENDS TestJoke )再次运行构建脚本后发现这个错误, 这是studid.asm出的错, 因为汇编代码无法使用SafeSEH特性, 这里给关掉 在CMakeLists.txt中加入链接选项以此来关闭SafeSEH: 再次运行build.bat后发现如下错误: 由于masm32 sdk开发包中是含有自己的编译器和链接器的。而当我使用VS编写cmake项目的时候使用的是VS自带的编译器和链接器, 这里是VS自带的编译器版本可以看到是14.x 而masm32 SDK开发套件的编译器版本是6.x 不同的编译器对汇编语法可能有细微的不同, 对语法的严格程度也不一样, 为了能适应VS自带版本编译器, 这里我选择修改masm32 sdk的头文件: 首先找到windows.inc并定位到出错行: 这里我选择将其改成宏, 这样可以规避这个问题: 代码如下: COMP_ELEM_ALL MACROLOCAL temptemp (COMP_ELEM_TYPECOMP_ELEM_CHECKEDCOMP_ELEM_DIRTYCOMP_ELEM_NOSCROLL)temp temp (COMP_ELEM_POS_LEFTCOMP_ELEM_SIZE_WIDTHCOMP_ELEM_SIZE_HEIGHT)temp temp (COMP_ELEM_POS_ZINDEXCOMP_ELEM_SOURCECOMP_ELEM_FRIENDLYNAME)EXITM temp ENDM接着定位到winextra.inc, 并定位到出错的位置: 将方括号改成圆括号即可: 完成之后发现成功了: 3. 总结与注意点 要非常注意名称粉碎的问题, 函数在C编译后的名称, 与C编译后的名称是完全不同的, 为了确保能够找到对应的名称, 如果你要使用C特性必须加上extern C让C函数以C的名称粉碎的方式进行汇编语言和C的名称粉碎结果是一样的, 但是调用约定会影响名称粉碎的结果。默认情况下C/C都用的是C调用约定, 所以你的汇编代码也要用C调用约定, 这也是为啥我用的是.model flat, C了 (完)
http://www.pierceye.com/news/841616/

相关文章:

  • dw制作旅游网站教程天津市区县档案部门网站建设指导意见
  • 关于网站建设的大学pinthis wordpress
  • 济宁 做网站企业做外贸网站常用术语
  • 国内优秀的设计网站推荐网页设计工作室赚钱吗
  • 商汇通网站广州白云学校网站建设
  • 茶叶企业建设网站php网站开发基础
  • 深圳网站建设 猴王网络地方信息网站源码
  • 微网站后台内容设置erp系统定制
  • 图片点击切换网站模板网站开发 北京外包公司
  • 网站正在建设中 免费东莞手机网站设计公司
  • 旅游网站开发成本包括企业管理控制系统
  • 青浦做网站中美最新局势分析
  • 高端网站建设公司哪家公司好有关网站开发的知识
  • 西宁做网站_君博示范cpa做电影网站侵权吗
  • 云梦网站开发什么是网络营销市场营销学
  • 六安建六安建设网站徐州招标信息网
  • 公司做一个网站内容如何设计方案效果图网址
  • 环保部网站建设项目验收方案软件界面设计工具都有什么
  • 外贸 静态网站 怎么做微信红包建设网站
  • 南京网站优化哪家好卖文具的网站建设
  • 黔西南州住房和城乡建设局网站wordpress导航浮动
  • 建设建材网站的目的免费网站建设的
  • 沈阳模板建站公司推荐wordpress 增加导航
  • 一般网站系统并发量建立网站的技术
  • 乐清网站推广公司佛山行业网站设计公司
  • 如何将优酷视频放到自己的网站傻瓜式建个人网站
  • 网站搭建与生成技术教材做网站用什么免费字体
  • flash 制作网站福田蒙派克图片
  • 使用cdn的网站赤水市建设局官方网站
  • 免费做个人网站产品推广方案策划书