繁体   English   中英

如何在wxWidgets(C ++)应用程序中嵌入wxPython

[英]How to embed wxPython in wxWidgets (c++) app

我使用嵌入式wxPython-3.0处理MSVC ++ wxWidgets-3.0应用程序。

尽管我的系统已经安装了Python 2.7和wxPython -3.0,但我已经完成了以下操作:(因为我们需要为wxWidgets应用,Python和wxPython拥有相同的构建配置)

  • 我已经以64位的DLL-Debug的形式下载并构建了wxWidgets,然后成功地以DLL-Debug模式(64位)运行了最小的项目示例。

    我下载了Python2.7源代码并在Debug(64位)中使用了它,然后我将调试dll和libs复制到了python安装文件夹(\\ DLLs和\\ libs)。

    我下载了wxPython3.0源代码并以DLL调试模式(64位)对其进行了调试,然后将调试dll和库复制到了python安装的文件夹(\\ Lib \\ site-packages \\ wx-3.0-msw \\ wx)中。

我从wxPython嵌入式示例中获取了Embedded.cpp,然后将代码从Embedded.cpp复制到wxWidgets示例最小应用程序的minimal.cpp中。

项目属性设置:

C / C ++:

  General    --  Additional include directories

                     C:\Python27\include

                     .\..\..\lib\vc_dll\mswud

                     .\..\..\include

连结器:

   General    --   Additional library directories

                         C:\Python27\libs

                         D:\Nuvsoft27\newpy\wxWidgets-3.0.0\lib\vc_dll


   Input         --   Additional dependncies

                          wxmsw30ud_core.lib
                                     .
                                     .
                                     .
                          Python27_d.lib

系统环境变量。

 PATH   --    D:\Nuvsoft27\newpy\wxWidgets-3.0.0\lib\vc_dll

PYTHONPATH -- C:\Python27;C:\Python27\Lib\site-packages\wx-3.0-msw

问题:

它在wxPyCoreAPI_IMPORT()函数中失败,返回false。

您能帮我解决这个问题吗,我做错了什么吗?

您可以在此处看到调用堆栈

wxPyCoreAPI_IMPORT() --> 

(wxPyCoreAPI*)PyCObject_Import("wx._core_", "_wxPyCoreAPI")  -->

PyImport_ImportModule(module_name) --> PyImport_Import(pname) -->

PyObject_CallFunction(import, "OOOOi", module_name, globals, globals, silly_list, 0, NULL);     --> 

call_function_tail(callable, args) --> PyObject_Call(callable, args, NULL) -->

PyCFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) --> 

 builtin___import__(PyObject *self, PyObject *args, PyObject *kwds) -->

PyImport_ImportModuleLevel(char *name, PyObject *globals, PyObject *locals,  PyObject *fromlist, int level)  -->

 import_module_level(name, globals, locals, fromlist, level) -->

load_next(parent, level < 0 ? Py_None : parent, &name, buf,  &buflen); --> 

import_submodule(mod, p, buf); 

在上面的函数中,他们正在检查模块,如果mod == Py_None,则返回NULL,然后输入NULL并返回NULL。

您可能还需要在PYTHONPATH上使用c:\\​​ Python27 \\ Lib \\ site-packages \\ wx-3.0-msw。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM