我想在我的 C++ 框架中使用一些 Python 代码来绘制一些统计数据。我已经找到了以下帖子(关于如何在 C++ 中嵌入 python)但是按照说明操作并没有成功:Embed python code in C++ (Windows + minGW + Python 2.7.2 + Eclipse)
#include "Python.h"
int main(int f_argc, const char* f_argv [])
{
Py_Initialize();
const char* pythonScript = "print 'Hello, world!'\n";
int result = PyRun_SimpleString(pythonScript);
Py_Finalize();
return 0;
}
我很抱歉,但我在制作文件或附加静态或动态库方面没有太多经验......
我必须遵循系统:
适用于 C/C++ 开发人员的 Windows 7 + 64 位 + Eclipse IDE,版本:Juno Service Release 1 + mingw + python32
在路径和符号下:
+ 添加了 python32 的包含目录
+ 添加了对应于 libpython32.a 的库“python32”
+ 添加库路径
编译和链接似乎有效,但是当我尝试启动 exe 时,我收到以下消息:
“程序无法启动,因为您的计算机缺少 python32.dll。尝试重新安装程序以解决此问题。”
我无法理解此消息,因为我尝试向源添加静态库 (libpython32.a)。你能给我一个正确的方向吗?
非常感谢您的帮助!
编辑:
添加了 makefile 和 objects.mk
制作文件
############################################### #############################
# 自动生成的文件。不要编辑!
############################################### #############################
-include ../makefile.init
RM := rm -rf
# All of the sources participating in the build are defined here
-include sources.mk
-include src/subdir.mk
-include subdir.mk
-include objects.mk
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C++_DEPS)),)
-include $(C++_DEPS)
endif
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
ifneq ($(strip $(CC_DEPS)),)
-include $(CC_DEPS)
endif
ifneq ($(strip $(CPP_DEPS)),)
-include $(CPP_DEPS)
endif
ifneq ($(strip $(CXX_DEPS)),)
-include $(CXX_DEPS)
endif
ifneq ($(strip $(C_UPPER_DEPS)),)
-include $(C_UPPER_DEPS)
endif
endif
-include ../makefile.defs
# Add inputs and outputs from these tool invocations to the build variables
# All Target
all: Sandbox.exe
# Tool invocations
Sandbox.exe: $(OBJS) $(USER_OBJS)
@echo 'Building target: $@'
@echo 'Invoking: Cross G++ Linker'
g++ -L"C:\Python32\libs" -o "Sandbox.exe" $(OBJS) $(USER_OBJS) $(LIBS)
@echo 'Finished building target: $@'
@echo ' '
# Other Targets
clean:
-$(RM) $(C++_DEPS)$(OBJS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(CXX_DEPS)$(C_UPPER_DEPS) Sandbox.exe
-@echo ' '
.PHONY: all clean dependents
.SECONDARY:
-include ../makefile.targets
对象.MK
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
USER_OBJS :=
LIBS := -lgdi32 -ljpeg-8 -ltiff-5 -lpython32
最佳答案
在 Windows 上,程序搜索路径和共享库搜索路径由相同的环境变量 PATH
控制。要嵌入 Python,您需要将包含 python32.dll
的目录(通常为 c:\python3.2
)放在 PATH
上。
关于如何在 Windows 上更改 PATH
的说明很容易搜索到;例如,参见 this videocast 解释它运行 Python,或 this SO answer 解释 Ruby 过程。
在 Windows 上运行 Python 也包含在 the Python on Windows FAQ. 中