各位朋友,现在我遇到了这样一个问题,不知道大家遇到过没有,遇到过的请指点一下。
我编写了一个
---------------------------------TestSimplePythonDll.cpp---------------------------------
#include
#include
#include
#include "TestPythonDll.h"
using namespace std;
int main2()
{
ifstream file1("../data/1.txt");
ofstream file2("../data/2.txt");
string strTemp = "";
int type = 1;
while(getline( file1, strTemp, '\n') )
{
cout << strTemp << endl;
file2 << strTemp << endl;
type = 0;
}
file1.close();
file2.close();
cout << "Good" << endl;
return type;
}
---------------------------------------------------------------------------------------
---------------------------------TestSimplePythonDll.h---------------------------------
#include "Python.h"
#pragma comment(lib,"python24.lib")
#ifndef TestSimplePythonDll_H
#define TestSimplePythonDll_H
int main2();
static PyObject *TestSimplePythonDll_main2(PyObject *self, PyObject *args)
{
return ( PyObject * )Py_BuildValue( "i", main2() );
}
static PyMethodDef TestSimplePythonDllMethods[] = {
{"main2", TestSimplePythonDll_main2, METH_VARARGS},
{NULL, NULL}
};
extern "C" __declspec(dllexport) void initTestSimplePythonDll()
{
(void) Py_InitModule("TestSimplePythonDll", TestSimplePythonDllMethods);
};
#endif
---------------------------------------------------------------------------------------
这样在VC7下生成一个动态链接库TestSimplePythonDll.dll。
之后我编写了一个这样的py
---------------------------------TestSimplePythonDll.py---------------------------------
import cgi
import os
import sys
def printHeader( title ):
print """Content-type: text/html
"-//W#C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml-strict.dtd">
""" % title
printHeader( "Test Dlls" )
os.chdir("C:\\Inetpub\\wwwroot\\")
import TestSimplePythonDll
result = TestSimplePythonDll.main2()
print "Good:%s" % result
print ""
---------------------------------------------------------------------------------------
然后我在IIS的默认文件夹下放置了这个py文件和动态链接库文件,以及需要的data/1.txt文件。
然后我在IE中打开http://127.0.0.1/TestSimplePythonDll.py
这个时候出现的总是
Good:1
从而我知道在main2函数中没有能够执行type = 0;这句。
这样就出现了问题。我觉得可能是python下调用C++的DLL再调用相对路径下的文件就不能正确的定位。
不知道各位大虾怎么看待这个问题。
问题有点罗嗦,还请多多见谅,谢谢!
Comment's author: Victor
回复删除03/14/2006 12:12:34 PM
DLL被调用的时候,路经可能变了,相对路径就会失效。试试看绝对路径如何?
Comment's author: Bill_Lang
回复删除03/15/2006 03:13:02 PM
感谢Victor的支持!这个问题我已经解决掉了,原来是网站默认文件夹在网页访问的过程中不能写文件。
Comment's author: osru
回复删除05/12/2006 08:35:26 AM
Hi everyone! I think your site is very interesting and useful. I always bookmarked it.