我知道标题中的那些错误并不是什么新鲜事,但是在这个星座中,我有一点相当奇怪,我找不到有帮助的解决方案。所以让我解释一下。
我正在使用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中创建一个对象。我开始使用默认构造函数的简单示例。这是我的代码:
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错误,我之前有简单的greet方法项目错误的链接器或导入。什么让我感到头疼的是我在课堂曝光示例中使用了相同的项目设置(我无法解释为什么我再次遇到链接器错误)。当我尝试通过以下方式公开方法问候时:
def("greet", greet);
在BOOST_PYTHON_MODULE块中,我可以构建它但在python中获取导入错误,例如:
module does not define init function
这很奇怪,这是一个链接器错误,因为我通过简单的greet函数进行了三重检查并将设置与我的项目进行了比较。在尝试公开课时,我是否可能需要更改某些设置?或者我在做一些可怕的错误?有什么建议吗?
问候 克里斯
答案 0 :(得分:0)
您缺少班级名称:
void World::greet(){
printf("hello");
}