0

見出しのこれらのエラーは新しいものではないことはわかっていますが、ここにあるこの星座ではかなり奇妙であり、役立つ解決策が見つかりません. それでは説明させてください。

私は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)
        ;
}

今ビルドしようとすると、単純なgreetメソッドプロジェクトで間違ったリンカーまたはインポートがあったときに以前に発生したLNK2019エラーが発生します。私の頭を悩ませているのは、クラス公開の例に同じプロジェクト設定を使用したことです (なぜリンカ エラーが再び発生するのか説明できません)。メソッドの挨拶のみを公開しようとすると、次のようになります。

def("greet", greet);

BOOST_PYTHON_MODULE ブロックでは、ビルドできますが、Python で次のようなインポート エラーが発生します。

module does not define init function

単純な挨拶機能を使用して設定をトリプルチェックし、プロジェクトと比較したため、リンカエラーであることは非常に奇妙です。クラスを公開しようとするときに、いくつかの設定を変更する必要がありますか? それとも、私はひどく間違ったことをしていますか?助言がありますか?

こんにちはクリス

4

1 に答える 1

0

クラスの名前がありません:

void World::greet(){
    printf("hello");
}
于 2013-05-11T09:38:35.293 に答える