我想通过动态链接到Python,将Python嵌入到MVC应用程序中

2024-09-27 04:16:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过动态链接到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是否有不同的方法。你能给我写信吗?在


Tags: py应用程序链接动态mbnulldllinitialize
1条回答
网友
1楼 · 发布于 2024-09-27 04:16:37

你在做的事很无聊。。。我不明白Python.h的问题,它只用于编译程序,而不是运行它。当然,您不需要它独立于编译时路径,是吗?在

总之,您可以简单地用void*替换PyObject*定义,因为它们是二进制兼容的类型。而且看起来你不太关心你的解决方案的类型安全性。在

我想说你的Py_编译失败的原因可能是你的脚本有错误,或者其他什么。您应该仔细研究引发的python异常。在

相关问题 更多 >

    热门问题