2015-06-15 2 views
3

Я пытаюсь скомпилировать простой пример python, встроенный в Clio 1.0.3 с MingGw. Источник main.cpp является:Ошибка Clion cmake python embedded

#include <iostream> 
#include "Python.h" 
using namespace std; 

int main() { 

Py_Initialize(); 
PyRun_SimpleString("print('Hello World from Embedded Python!!!')"); 
Py_Finalize(); 

return 0; 
} 

Мои CMakeList.txt файлов:

cmake_minimum_required(VERSION 3.2) 
project(pruebapy) 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 
include_directories("C:\\SoftwareExtras\\Python27\\include") 
set(CMAKE_LIBRARY_PATH "C:\\SoftwareExtras\\Python27\\libs") 
set(SOURCE_FILES main.cpp) 
add_executable(pruebapy ${SOURCE_FILES}) 

Но когда buils генерировать следующее сообщение об ошибке:

Linking CXX executable pruebapy.exe 
CMakeFiles\pruebapy.dir/objects.a(main.cpp.obj): In function `main': 
C:/pruebapy/main.cpp:10: undefined reference to  `_imp__Py_Initialize' 
C:/pruebapy/main.cpp:12: undefined reference to `_imp__PyRun_SimpleStringFlags' 
C:/pruebapy/main.cpp:14: undefined reference to `_imp__Py_Finalize' 
collect2.exe: error: ld returned 1 exit status 
CMakeFiles\pruebapy.dir\build.make:87: recipe for target 'pruebapy.exe' failed 
CMakeFiles\Makefile2:59: recipe for target 'CMakeFiles/pruebapy.dir/all' failed 
makefile:74: recipe for target 'all' failed 
mingw32-make.exe[2]: *** [pruebapy.exe] Error 1 
mingw32-make.exe[1]: *** [CMakeFiles/pruebapy.dir/all] Error 2 
mingw32-make.exe: *** [all] Error 2 

Я попробовать различные конфигурации CMake, но ошибка сохраняется. Как я могу решить проблему ?.

Чем вы за вашу помощь.

+0

Здравствуйте, я могу разрешить конфликт. Я обнаруживаю, что при установке gnu для windows существует две версии 3.4 и 4.9 gcc. Затем, когда компоновщик объектного файла, компоновщик принимает версию 3.4, но источники скомпилированы с 4.9. Я unisntall 3.4 и решить проблему. Спасибо. – Ezequiel

ответ

1

В соответствии с документацией на Python директива include для «Python.h» должна отображаться сначала в файле C/C++.

Замечание Поскольку Python может определять некоторые определения перед процессором, которые влияют на стандартные заголовки в некоторых системах, вы должны включить Python.h перед включением любых стандартных заголовков. " https://docs.python.org/2/extending/extending.html

Попробуйте это первым.

Если вы получаете ошибки long_bit, это, по-видимому, связано с несоответствием компилятора для Python и CygWWin или MinGw. Попробуйте версию Clion с ранним доступом с поддержкой компилятора MS Visual Studio, поскольку большинство Pythons (все?) Скомпилированы с этим компилятором.

Смежные вопросы