ブーストをインストール Python から C/C++ を呼び出す方法はたくさんあります。この記事では boost.python を使用します。後期に boost の開発作業が多くなることを考慮して、 boost も一緒にインストールします。 boost ライブラリは 2 つの部分に分かれて使用されます。1 つは対応するヘッダーファイルを直接使用する方法で、もう 1 つは対応するライブラリをコンパイルしてインストールしてから使用できるようにします。 具体的なインストール方法については、https://www.jb51.net/article/150380.htm を参照してください。 ここでは以下を使用します: sudo apt-get で libboost-all-dev をインストールします サーバ シリアル化後に送信 メイン.cpp: #include <iostream> #include "libUO.h" int メイン() { UO_C_ソケットt; // t.StartSocketServer("",4121); boost::thread t1(boost::bind(&UO_C_Socket::StartSocketServer,&t,"",4121)); 睡眠(2); // boost::thread t2(boost::bind(&UO_C_Socket::StartSocketClient,&t,"127.0.0.1",4121)); // t2.join(); t1.結合(); 0を返します。 } クライアント クライアントは、UO_BaseFun.h に基本関数を実装し、それらをカプセル化して、boost_python を通じてエクスポートします。 BOOST_PYTHON_MODULE 内の名前は、最終的な make によって生成された so ファイルと一致する必要があることに注意してください。 同じ名前、そうでない場合はエラーが発生し、エラー名は忘れられます UO_libdll_py_wrap.cpp: #include <boost/python.hpp> #include <boost/python/module.hpp> #include <boost/python/def.hpp> #include "UO_BaseFun.h" BOOST_PYTHON_MODULE(UO_BaseFun) //Pythonモジュール{ // boost::python::class_<UO_C_Socket,boost::noncopyable>("UO_C_Socket") boost::python::class_<UO_C_Socket>("UO_C_Socket") .def("StartSocketClient",&UO_C_Socket::StartSocketClient) // .def("getname",&student::getname) // .def("setage",&student::setage) // .def("getage",&student::getage) // .add_property("名前",&student::getname,&student::setname) // .add_property("年齢",&student::getage,&student::setage) ; } Makefile でのコンパイルと接続の違いに特に注意してください。未定義のシンボル エラーが発生した場合は、-lboost_filesystem などのダイナミック リンク ライブラリを追加する必要があります。エラーが発生しました: pyconfig.h が見つからないため、含める必要があります -I/usr/include/python2.7 です。 makeが完了すると、UO_BaseFun.soファイルが生成されます。 メイクファイル: UO_BaseFun.so:UO_libdll_py_wrap.o g++ UO_libdll_py_wrap.o -o UO_BaseFun.so -shared -fPIC -L/usr/lib/x86_64-linux-gnu\ -lboost_ファイルシステム -lboost_スレッド -lboost_シリアル化 -lboost_python -lboost_システム UO_STR.o: g++ -c UO_STR.h -o UO_STR.o -I/usr/include/boost \ # -lboost_シリアライゼーション UO_BaseFun.o:UO_STR.o g++ -c UO_BaseFun.h -o UO_BaseFun.o -I/usr/include/boost \ # -lboost_system -lboost_filesystem -lboost_thread -lboost_serialization UO_libdll_py_wrap.o:UO_BaseFun.o g++ -c UO_libdll_py_wrap.cpp -o UO_libdll_py_wrap.o -fPIC -I/usr/include/python2.7 # -lboost_シリアライゼーション クリーン: rm -rf UO_STR.o O_libdll_py_wrap.o UO_BaseFun.o rm -rf UO_BaseFun.so 確認する UO_StoreSystem_py.py: UO_BaseFunをインポートする テスト = UO_BaseFun.UO_C_Socket() テストを開始します。("127.0.0.1",4121) 要約: 上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。 以下もご興味があるかもしれません:
|
>>: vue3.0 でカルーセル コンポーネントをカプセル化する手順
プレビュー: コード:ページセクション: <テンプレート> <div class=...
MySQL スロー クエリ ログは、問題のあるクエリを追跡するのに非常に役立ちます。現在のプログラム...
最近、Ant Design Blazor コンポーネント ライブラリにマルチタブ コンポーネントを実...
mysql ダーティページWAL メカニズムにより、InnoDB はステートメントを更新するときに、...
目次1. プロジェクト環境: 2: DNSサーバーの設定i: 前方解析を構成する: ii: 逆解像度...
関連記事:初心者が学ぶ HTML タグ (2)導入された HTML タグは、必ずしも XHTML 仕...
(1)実験環境youxi1 192.168.5.101 ロードバランサーyouxi2 192.168...
背景:サーバーがFlaskプロジェクトをデプロイし、python3をインストールしたため、再起動時に...
Windows サーバー リモート デスクトップのデフォルトのポート番号は 3389 です。職場でサ...
PCサイトとモバイルサイトの分離設定にはnginxを使います。私のPCサイトとモバイルサイトは、SE...
操作効果 html <ヘッド> <メタ文字セット='UTF-8'&...
この記事はMySQL 5.7.23 winx64のインストールチュートリアルを記録します。具体的な内...
この記事では、期間限定フラッシュセール機能を実装するためのJavaScriptの具体的なコードを参考...
1. フォントを実行し、フォント フォルダーを開いて、使用するフォント ファイルを見つけます。 2....
この記事は、参考のためにMySQL 8.0.17のインストールと設定のグラフィックチュートリアルを記...