見出しのこれらのエラーは新しいものではないことはわかっていますが、ここにあるこの星座ではかなり奇妙であり、役立つ解決策が見つかりません. それでは説明させてください。
私は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
単純な挨拶機能を使用して設定をトリプルチェックし、プロジェクトと比較したため、リンカエラーであることは非常に奇妙です。クラスを公開しようとするときに、いくつかの設定を変更する必要がありますか? それとも、私はひどく間違ったことをしていますか?助言がありますか?
こんにちはクリス