我想通过动态链接到Python,将Python嵌入到mvc应用程序中。在
hModPython = AfxLoadLibrary("Python23.dll");
pFnPyRun_SimpleString *pFunction = NULL;
pFnPy_Initialize *pPy_Initialize = NULL;
pFunction = (pFnPyRun_SimpleString *)::GetProcAddress(hModPython, "PyRun_SimpleString");
pPy_Initialize = (pFnPy_Initialize *)::GetProcAddress(hModPython, "Py_Initialize");
try
{
pPy_Initialize();
if ( pFunction )
{
(*pFunction)("import sys"); // call the code
}
else
{
AfxMessageBox("unable to access function from python23.dll.", MB_ICONSTOP|MB_OK);
}
}
catch(...)
{
}
然后我想通过我的MFC应用程序执行一个Python脚本-
^{pr2}$我在这里面临两个问题,我想动态链接到Python,并使我的vc应用程序独立于Python安装在用户机器上的位置。但是,我需要在代码中包含python.h来编译以下声明。在
PyObject*pCodeObject
有解决办法吗?还是必须为“Python.h”指定include?这意味着程序又会变得依赖路径。在
我尝试将一些python定义(包括PyObject)复制到mfc应用程序的头文件中。那就很好了。但是Py峎CompileString调用失败。最后,我无法通过动态链接到python来运行MFC应用程序中的脚本。在
如何做到这一点?请帮忙。动态链接到python是否有不同的方法。你能给我写信吗?在
你在做的事很无聊。。。我不明白Python.h的问题,它只用于编译程序,而不是运行它。当然,您不需要它独立于编译时路径,是吗?在
总之,您可以简单地用void*替换PyObject*定义,因为它们是二进制兼容的类型。而且看起来你不太关心你的解决方案的类型安全性。在
我想说你的Py_编译失败的原因可能是你的脚本有错误,或者其他什么。您应该仔细研究引发的python异常。在
相关问题 更多 >
编程相关推荐