Я знаю, что эти ошибки в заголовке ничего нового, но в этом созвездии у меня здесь довольно странно, и я не нахожу решение, которое помогает. Поэтому позвольте мне объяснить.повышение классов экспозиции LNK2019/модуль не определяет функцию init
Я работаю с boost.python, Visual Studio 2012 и учебным курсом с сайта разработчиков. Так как я, наконец, исправил все проблемы с линкером и импортом, я получил первый учебник:
char const* greet()
{
return "hello, world";
}
#include <boost/python.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("greet", greet);
}
Хорошо работает.
Теперь я пытаюсь все это с классом, что я могу создать объект в python. Ofc Я начал с более легкого примера с конструктором по умолчанию. Вот мой код:
World.h
#pragma once
class World
{
public:
void greet();
};
World.cpp
#include "World.h"
#include <stdio.h>
void greet(){
printf("hello");
}
#include <boost\python.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(hello)
{
class_<World>("World")
.def("greet", &World::greet)
;
}
Если теперь я пытаюсь построить его, я получаю LNK2019 ошибку, которую я имел, прежде чем в то время как имеющие неправильные линкеры или импорт по проекту простого приветствия. Что трещит в моей голове, так это то, что я использовал те же настройки проекта для моего примера воздействия на класс (я не могу объяснить, почему я снова получаю ошибку компоновщика). Когда я пытаюсь только выставить метод здороваться по:
def("greet", greet);
в блоке BOOST_PYTHON_MODULE, я могу построить его, но получаю сообщение об ошибке импорта в Python, таких как:
module does not define init function
Это так странно, что это ошибка компоновщика, потому что я triple проверил и сравнил настройки с моим проектом с помощью простой функции greet. Возможно, мне придется изменить некоторые настройки при попытке открыть классы? Или я делаю что-то ужасно неправильно? Какие-либо предложения?
Привет Chris
OMG, спасибо, я чувствую себя довольно глупо сейчас ... –