最近的这个项目,是利用Python操作文本的方便和快捷性,嵌入到项目中处理文本文件。目前做的就是将Python解释器集成到程序里面,然后附带一个Python24.dll,不过这样好像还是差一个文件的,msvcr71.dll,开始测试的时候,由于机器里面装有Python24,没有测试出来,到客户那里演示的时候,才发现没有这个文件,幸亏带了Python的安装包,要不然就出丑了。
由于昨天对脚本进行了一些改动,改动的结果感觉差不多,就没有测试直接给演示了,导致演示中出现了一个小问题,改动部分的脚本执行有问题,程序调用返回始终是NULL。开始以为是脚本调用错了,后来以为是缓存的问题,总之排除了很多外在的因素后,最后认为Python的脚本有问题。最后查得得结果是处理传出来的数据结构中,脚本处理有问题,导致单独执行的时候没错(因为测试用的数据结构没有和传出来的匹配),但是集成处理有问题。
开始的时候,就是准备将Python执行的日志集成进去,不过由于偷懒,只做了程序的,没有做脚本的。认为脚本在本地执行了,程序再去执行是应该没有问题的,现在发现还有有些不同,需要处理的。看来把Python的执行日志集成进去是必要的,否则临时修改脚本,出错了就不好找问题所在了。
帮个忙。
我的论文希望使用PYTHON,但我不知道为什么我的程序出现很多连接错误!
我希望作成模块供调用。另有一篇文章讲到似乎是不提供DEBUG版本的DLL,我想知道在DEV-CPP中如何,改变编译模式,生成RELEASE版本?
代码如下—————————————————————————-
#include <windows.h>
#include "Python.h"
#include "dll.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*class Tank
{public:
Tank()
forward()
backward()
turn(int angle)
private:
int angle; //方向角
int x,y; //x,y坐标
int step; //速度
}
*/
//——————————————————————————
static PyObject *tank_forward(PyObject *pSelf,PyObject *pArgs)
{int angle,x,y,step;
PyArg_ParseTuple(pSelf,"i(ii)i",&angle,&x,&y,&step);
x+=(int)(step*cos(angle));
y+=(int)(step*sin(angle));
return Py_BuildValue("i(ii)i",angle,x,y,step);
}
//——————————————————————————
static char count_doc[]="Class Tank!";
//——————————————————————————
static PyMethodDef tank_methods[]=
{{"forword",tank_forward,METH_VARARGS,NULL},
{NULL,NULL}
};
//——————————————————————————
DL_EXPORT(void) initTank()
{Py_InitModule("Tank",tank_methods);
}
//——————————————————————————
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
/* Returns TRUE on success, FALSE on failure */
return TRUE;
}
=====================================================================================
错误 [Linker error] undefined reference to `_imp__PyArg_ParseTuple’
[Linker error] undefined reference to `_imp__Py_BuildValue’
[Linker error] undefined reference to `_imp__Py_InitModule4′
ld returned 1 exit status
E:\Makefile.win [Build Error] [tank.dll] Error 1
debug是自己下载Python的源码进行编译的