4

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;
}

申し訳ありませんが、make ファイルや静的または動的ライブラリのアタッチの経験があまりありません....

次のシステムを使用する必要があります: Windows 7 + 64 ビット + Eclipse IDE for C/C++ Developers、バージョン: Juno Service Release 1 + mingw + python32

パスとシンボルの下: + python32 のインクルード ディレクトリを追加 + libpython32.a に対応するライブラリ「python32」を追加 + ライブラリ パスを追加

コンパイルとリンクは機能しているようですが、exe を起動しようとすると、次のメッセージが表示されます。

「コンピュータに python32.dll が見つからないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてください。」

ソースに静的ライブラリ (libpython32.a) を追加しようとしているため、このメッセージを理解できません。正しい方向に向けて優しく押してくれませんか?

ご助力ありがとうございます!

編集: makefile と objects.mk を追加

MAKEFILE ################################################## ############################## # 自動生成ファイル。編集しないでください!#################################################### ###############################

-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

OBJECTS.MK

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

USER_OBJS :=

LIBS := -lgdi32 -ljpeg-8 -ltiff-5 -lpython32
4

2 に答える 2

0

調べたスタティック ライブラリ (libpython32.a) は実際のスタティック ライブラリではなく、python32.dll の定義のみが含まれています。したがって、これは python32.dll のラッパーにすぎません。

Windows が自動的に dll を検出できるように、Windows PATH に python インストール フォルダーを追加する必要があります。

于 2012-12-11T05:47:33.680 に答える