我正在尝试将Python嵌入到C++Builder应用程序中。
在对这个主题(示例)进行了许多研究之后,我发现Python4Delphi项目似乎非常有趣,而且正是我想要做的。问题是,我不是在使用Delphi (而且我也不想使用它),而是只使用C++Builder。
我还找到了一些将Python嵌入到C++项目(示例)中的示例,因此我正在尝试这种方法。问题是我连第一个简单的"Hello“示例都无法编译。
以下是我遵循的步骤:
#pragma hdrstop
#pragma argsused
#ifdef _WIN32
#include <tchar.h>
#else
typedef char _TCHAR;
#define _tmain main
#endif
#include <stdio.h>
#include <conio.h>
#include <Python.h>
int main()
{
PyObject* pInt;
Py_Initialize();
PyRun_SimpleString("print('Hello World from Embedded Python!!!')");
Py_Finalize();
printf("\nPress any key to exit...\n");
if(!_getch()) _getch();
return 0;
}在编译过程中,我得到以下错误倍数:
bcc32c错误pymath.h(22):声明与使用已在作用域中的声明的目标冲突。
例如,当编译pymath.h的第22行时,就会发生这种情况:
#ifndef HAVE_ROUND
extern double round(double);
#endif我认为这可能是因为编译器和/或pyconfig.h配置。作为C++的初学者和这件事的王者,我很难解决这个问题。
你能帮我吗,你有什么建议吗?
编辑
自2020年4月以来,C++Builder似乎支持Boost库,它可以用于在C++程序中实现Python。所以前面的错误不再出现,相反,我有一个不同的错误。
使用与前面相同的脚本,但使用#include <boost/Python.hpp>,我有一个错误:
ilink32错误致命:无法打开文件‘LIBBOOST_PYTHON38 38-BCB32C-MT-S-x32-1_68.LIB’
你有办法解决这个问题吗?
发布于 2021-03-03 16:53:33
根据Python文档,Borland编译器是受支持的。
因此,目前唯一的方法是恢复使用"Project > Building > C++ Compiler“选项卡中的”经典“。
然后,您需要从安装所提供的dll中创建与OMF兼容的库,并将它们添加到项目中:
implib -aa python3.lib python3.dll
implib -aa python39.lib python39.dll如果您收到链接器错误:
[ilink32 Error] Error: Unresolved external '__Py_RefTotal' referenced from ...
[ilink32 Error] Error: Unresolved external '__Py_NegativeRefcount' referenced from ...您需要修改包含文件pyconfig.h:
#ifdef _DEBUG
//# define Py_DEBUG <<--- comment this!!
#endif发布于 2020-10-10 22:34:16
我在C++Builder 10.4和Python4Delphi一起使用。
我安装了:
Python版本3.8.2 (标记/v3.8.2:7b3ab59,2020年2月25日,22:45:29) MSC v.1916 32位(Intel)版本信息。sys.version_info(major=3,minor=8,micro=2,releaselevel='final',serial=0)
安装和测试步骤:
PythonEngine.hpp - C:\Users\david\Documents\Embarcadero\Studio\Projects\Python4Delphi\python4delphi-master\Source
C:\Users\Public\Documents\Embarcadero\Studio\21.0\Dcp,Python_D.bpi,Python_D.dcp,Python_D.lib
我将在博客上写一篇文章,在那里我可以放置屏幕截图和源代码链接。
目前还没有安装C++BUilder 2020的地方。我认为您应该能够使用C++Builder附带的Delphi命令行编译器,但是必须尝试--我在不同的机器上有RADStudio10.4和RADStudio10.4.1。
https://stackoverflow.com/questions/64100660
复制相似问题