如何运行vc6+python2.52编译的程序,注:脚本中使用了ctypes

苹果的人生 2008-07-07 03:56:20
已经把可执行文件(exe),程序调用的脚本(py),MFC写的动态库(Crypt.dll),python的动态库(python25.dll)
放到同一个文件夹去,开发机上运行正常,但放到其他没装python的机器上就不行了
是要在其他机器上装什么东西吗?

注:不使用ctypes的脚本运行是正常的
...全文
211 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
DDGG 2008-07-09
  • 打赏
  • 举报
回复
用py2exe打包后,你就知道你的py脚本需要用到哪些库。
然后你可以删除掉py2exe生成的exe程序,因为你有自己的加载程序,只需要调用一段脚本而已。
但py2exe帮你整理出来的那些库文件是运行那段脚本所不可缺少的(基本上如此,有时仍可精简)。
Semigod 2008-07-08
  • 打赏
  • 举报
回复
最简单的方法,先在原来机器上运行起来,用 tasklist /m 查看其使用的所有DLL,与现在出问题时使用的DLL相比较就知道差哪些了
苹果的人生 2008-07-08
  • 打赏
  • 举报
回复
以下是test1.py内容:
def TestCrypt(mode,key,source):
output=' '
from ctypes import CDLL
Des=CDLL('Crypt.dll')
Des.DoMac(mode,key,source,output)
# if output==' ':
# print 'No use DLL'
# return 'No use DLL'
print output
return output

TestCrypt(0,'1111111111111111','2222222222222222')
苹果的人生 2008-07-08
  • 打赏
  • 举报
回复
说明一下,是在本机上运行,也就是装了PYTHON的机子~
苹果的人生 2008-07-08
  • 打赏
  • 举报
回复
回1楼:
复制DLL的话...我也不知道差的是哪些DLL
PYTHON目录下的是全部的复制了

回2楼:
实在搞不懂了...直接运行无问题,得到的结果也对,但只要用DEBUGGER运行,就会出错...以下出错提示,有点长
Traceback (most recent call last):
File "D:\Python25\lib\idlelib\Debugger.py", line 67, in run
return self.idb.run(*args)
File "D:\Python25\lib\bdb.py", line 366, in run
exec cmd in globals, locals
File "C:\Documents and Settings\Administrator\桌面\脚本测试工具\test1.py", line 34, in <module>
TestCrypt(0,'1111111111111111','2222222222222222')
File "C:\Documents and Settings\Administrator\桌面\脚本测试工具\test1.py", line 26, in TestCrypt
Des=CDLL('Crypt.dll')
File "D:\Python25\lib\ctypes\__init__.py", line 346, in __init__
self._name = name
File "D:\Python25\lib\ctypes\__init__.py", line 346, in __init__
self._name = name
File "D:\Python25\lib\bdb.py", line 48, in trace_dispatch
return self.dispatch_line(frame)
File "D:\Python25\lib\bdb.py", line 66, in dispatch_line
self.user_line(frame)
File "D:\Python25\lib\idlelib\Debugger.py", line 21, in user_line
self.gui.interaction(message, frame)
File "D:\Python25\lib\idlelib\Debugger.py", line 186, in interaction
self.show_variables(1)
File "D:\Python25\lib\idlelib\Debugger.py", line 299, in show_variables
lv.load_dict(ldict, force, self.pyshell.interp.rpcclt)
File "D:\Python25\lib\idlelib\Debugger.py", line 455, in load_dict
svalue = self.repr.repr(value) # repr(value)
File "D:\Python25\lib\repr.py", line 24, in repr
return self.repr1(x, self.maxlevel)
File "D:\Python25\lib\repr.py", line 34, in repr1
s = __builtin__.repr(x)
File "D:\Python25\lib\ctypes\__init__.py", line 354, in __repr__
(self.__class__.__name__, self._name,
File "D:\Python25\lib\ctypes\__init__.py", line 361, in __getattr__
func = self.__getitem__(name)
File "D:\Python25\lib\ctypes\__init__.py", line 366, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))

回3楼:
py2exe?那是会把脚本给编译成EXE吗?
可我现在就是要用脚本形式啊,方便随时更改代码的
maplele20 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 DDGG 的回复:]
Python调用VC的动态库?ctypes这个库是Python的第3方库,因此你需要将其随你的exe一起发布。
建议用py2exe,它会自动搜索并打包所需用到的python库。

[/Quote]
在Python 2.5版中已经包含了ctypes模块.
不过打包确实是个不错的主意.
苹果的人生 2008-07-08
  • 打赏
  • 举报
回复
现在运行目录里的文件有:
_ctypes.pyd
Crypt.dll
python25.dll
test1.py
TestPython.exe
苹果的人生 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 Semigod 的回复:]
最简单的方法,先在原来机器上运行起来,用 tasklist /m 查看其使用的所有DLL,与现在出问题时使用的DLL相比较就知道差哪些了
[/Quote]

的确,用这方法找到个不同点了,但直接COPY这文件过去还是无效,是不是要注册什么的??
找到的是:
Python25\DLLs\_ctypes.pyd
DDGG 2008-07-07
  • 打赏
  • 举报
回复
Python调用VC的动态库?ctypes这个库是Python的第3方库,因此你需要将其随你的exe一起发布。
建议用py2exe,它会自动搜索并打包所需用到的python库。
maplele20 2008-07-07
  • 打赏
  • 举报
回复
错误提示?
Semigod 2008-07-07
  • 打赏
  • 举报
回复
缺什么dll就也copy过来

37,709

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧