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

网站建设课程内容/搜索引擎优化案例分析

网站建设课程内容,搜索引擎优化案例分析,织梦可以做导航网站,中国建设信息好吧,我承认我是个菜鸟,所以今天我勇敢的站出来接受大家的鄙视……话说早上同事喊我帮他改段程序,很简单,就是用PyRun_SimpleString函数执行一段Python脚本。错误也很直接,执行的时候出现写地址错误,如果你…

好吧,我承认我是个菜鸟,所以今天我勇敢的站出来接受大家的鄙视……

话说早上同事喊我帮他改段程序,很简单,就是用PyRun_SimpleString函数执行一段Python脚本。错误也很直接,执行的时候出现写地址错误,如果你经常用VC/Delphi写一些用指针转来转去的程序,就应该经常见到这样的错误。

所以,当时我很镇定。

嗯,我镇定自若的指着屏幕(你看,那个时候这只手还很干燥)。呐,是不是文件访问权限设得太高了?

同事答曰,我已经试过所有的组合了。一边说一边给我看MSDN上的fopen函数说明。

那么……嗯,今天天气真好啊……(严肃点,我这儿思考问题呢)……那么,我们试试看……

在一番瞎折腾过后,我的直觉告诉我,这个不应该是我同事的编码有问题,大概是项目的什么配置或者干脆就是Python给出的API有问题。在看了同事从若干搜索引擎上找到的无数文章后,更确信这一点。于是我回到自己的座位上,打开Google,也开始搜索。

不找不知道,Python的资料这叫个乱噢……即使是英文文档,也充满了荒唐可笑的错误。有位达人还发表了这样一段代码:

 #include "Python.h"

int  main()
  {
    Py_Initialize();
    PyRun_SimpleFile("<filename>");
    Py_Finalize();
    return();
  }

呃……我的英文很差,也许我误解了人家的意思,他其实是贴了份伪码?反正这份代码绝对是匪夷所思的。连PyRun_SimpleFile的参数表都对不上。本来就短到没几个字的文章,再配上这么“简洁”的代码,实在就没什么营养了。

上面这个例子,只是我今天搜到的无数无用信息之一,在令我哭笑不得的混乱中,鬼知道哪个是有用的。唯一能确定的是,遇到这个问题的人还真挺多的……有人说这是个MSVC的使用问题,而不该当作Python问题(嗯,提这个问题的都是用VC的,看来有道理);有人说这是因为-MD编译选项没打开,打开它就好了,于是我就在IDE中设置C++编译器命令行,加上-MD,但是问题依旧(嗯,当时我还在想,这个-MD是什么意思?难道编译器也用汉语拼音讲粗口?);还有人说,这个是因为vc运行时库方面,Python解释器和开发者使用的不统一,所以出错,根治的方法只有重编译整个Python。啥也不说,我看了这个头都大了。

读过几十篇不知道是不是恶搞的文章后,我的恶趣味上来了,在编译了Python内核的Debug版后,我开始了内核跟踪之旅。令人绝望的是,出错的地方在内核非常非常深入的地方,类似PyRun_ParseFile 之类的函数,也就是说,如果真的是源码有问题,那么整个Python就应该根本不能在Windows上正常运行。这显然与我们所见的事实相违背。事实上,我真的把Python源码中执行脚本的那段复制出来,仍然不能使用。此时已经是晚上,我的思路又回到了项目的设置,一样的源代码,Python项目编译出来正常,我调用就有错,这个很难说得通。于是我在项目设置中漫无目的的巡视着……

这这这,这是什么?

Embeding By PyRun_SimpleFile

这不就是哪个什么什么粗口编译选项么?在把项目选项页中的“C/C++”·“运行时库”选项设置为多线程DLL(/MD)——调试状态下为“多线程调试DLL(/MDd)”后,一切正常了!

呃,严肃点说,Python的Windows版都是以/MD,也就是多线程DLL模式编译的,如果嵌入调用PyRun_SimpleFile,或者其它以解释器执行文件的API,都应该把项目编译成这个模式,不然就会发生内存访问错误。

呃……我的英文很差,也许我误解了人家的意思,他其实是贴了份伪码?反正这份代码绝对是匪夷所思的。连PyRun_SimpleFile的参数表都对不上。本来就短到没几个字的文章,再配上这么“简洁”的代码,实在就没什么营养了。

上面这个例子,只是我今天搜到的无数无用信息之一,在令我哭笑不得的混乱中,鬼知道哪个是有用的。唯一能确定的是,遇到这个问题的人还真挺多的……有人说这是个MSVC的使用问题,而不该当作Python问题(嗯,提这个问题的都是用VC的,看来有道理);有人说这是因为-MD编译选项没打开,打开它就好了,于是我就在IDE中设置C++编译器命令行,加上-MD,但是问题依旧(嗯,当时我还在想,这个-MD是什么意思?难道编译器也用汉语拼音讲粗口?);还有人说,这个是因为vc运行时库方面,Python解释器和开发者使用的不统一,所以出错,根治的方法只有重编译整个Python。啥也不说,我看了这个头都大了。

读过几十篇不知道是不是恶搞的文章后,我的恶趣味上来了,在编译了Python内核的Debug版后,我开始了内核跟踪之旅。令人绝望的是,出错的地方在内核非常非常深入的地方,类似PyRun_ParseFile 之类的函数,也就是说,如果真的是源码有问题,那么整个Python就应该根本不能在Windows上正常运行。这显然与我们所见的事实相违背。事实上,我真的把Python源码中执行脚本的那段复制出来,仍然不能使用。此时已经是晚上,我的思路又回到了项目的设置,一样的源代码,Python项目编译出来正常,我调用就有错,这个很难说得通。于是我在项目设置中漫无目的的巡视着……

这这这,这是什么?

Embeding By PyRun_SimpleFile

这不就是哪个什么什么粗口编译选项么?在把项目选项页中的“C/C++”·“运行时库”选项设置为多线程DLL(/MD)——调试状态下为“多线程调试DLL(/MDd)”后,一切正常了!

呃,严肃点说,Python的Windows版都是以/MD,也就是多线程DLL模式编译的,如果嵌入调用PyRun_SimpleFile,或者其它以解释器执行文件的API,都应该把项目编译成这个模式,不然就会发生内存访问错误。

最后,我要说的是,用PyRunSimpleFile函数调用Python脚本,真的很简单,甚至可以简单到如下这样:

main( argc,  *argv[])
{Py_Initialize();* fp = ;fp = fopen(, );(fp == ) 
        {;}PyRun_SimpleFile(fp, );Py_Finalize();;
}

我们不需要include系统I/O库,Python.h中已经封装了这些东西,也不需要fclose,PyRun_SimpleFile已经做了这一步,相信我,我在源代码中看到了它。

写下这篇文章,其实是想纪念下今天这个令我抓狂的遭遇,以及它戏剧性的收场,另外也感慨自己对日常使用的编译器太不了解……现在总算知道-MD是什么意思,在哪里设置了,MD……


转载于:https://www.cnblogs.com/it20120227/archive/2005/12/06/2370838.html

http://www.lbrq.cn/news/1055845.html

相关文章:

  • 书店网站建设定位及目标/北京建公司网站价格
  • 襄阳网站制作/江苏营销型网站建设
  • 苏州外贸网站/搜索引擎营销的主要方法包括
  • 做网站流程、/百度搜索图片
  • 网页版传奇变态版/短视频seo厂家
  • 网站内容都是复制来的/百度官方营销推广平台加载中
  • 做网站的得花多钱/互联网广告优势
  • 做相册本哪个网站好用/品牌形象推广
  • 做滋补品销售有什么网站/有链接的网站
  • 河田镇建设局网站/网络营销师官网
  • 做网站推广的公司发展前景/湖南网站网络推广哪家奿
  • 做旅游网站需要的背景/国外搜索引擎大全不屏蔽
  • 深圳网站制作公司流程图/杭州今天查出多少阳性
  • 东莞市住房建设网站/网络推广需要花多少钱
  • 郑州哪个医院看妇科病最好的医院/茶叶seo网站推广与优化方案
  • iis7搭建asp网站/神童预言新冠2023结束
  • php做学校网站免费下载/潍坊网站关键词推广
  • wordpress admin 403/seo顾问是什么职业
  • 广州番禺网/青岛关键词优化平台
  • 广州网址大全/沈阳网站制作优化推广
  • 国外网站兼职做效果图/手机怎么自己制作网页
  • html5和css3制作个人网站源码/网络广告文案案例
  • iis 5 如何添加网站/seo工具网站
  • 人工智能/广告seo是什么意思
  • 上海网站制作 公司/免费企业黄页查询官网
  • 做网站本溪/公司网站制作公司
  • 济南正规网站建设公司哪家好/看网站搜索什么关键词
  • 青岛市住房和城乡建设局网站查询/网站推广是什么
  • 建立com网站/营销图片大全
  • 山西省建设注册中心网站首页/北京网站seowyhseo
  • AI鉴伪技术:守护数字时代的真实性防线
  • 推荐系统学习笔记(十一)预估分数融合
  • 任务管理器如何查看详细的命令行和路径?
  • Git 基础操作笔记(速查)
  • 《从零构建大语言模型》学习笔记2,文本数据处理1(以及tiktoken库无法下载gpt2参数,调用get_encoding时SSL超时的解决方法)
  • 【SpringBoot】SpringBoot配置