こんにちは。 現役エンジニアの”はやぶさ”@Cpp_Learningです。 仕事の都合もあり「C言語 ⇒ C++ ⇒ Python」の順にプログラミング言語を習得しました。 最近は、PythonとC/C++両方を使って仕事をしています。 Pythonでプログラミングをしていると…
![【Python C API入門】C/C++で拡張モジュール作ってPythonから呼ぶ -前編-|はやぶさの技術ノート](https://cdn-ak-scissors.b.st-hatena.com/image/square/299df0bc8b1501f422351f34fd74fae611634300/height=288;version=1;width=512/https%3A%2F%2Fcpp-learning.com%2Fwp-content%2Fuploads%2F2019%2F01%2FmyModule_install.jpg)
COLUMN 組み込みエンジニアの戸惑い PythonからC言語を呼び出してみる①(Python/C APIを使った場合) # Python # エンジニア # 組み込みエンジニアの戸惑いシリーズ Python編 # 言語 2019-07-26 FSI Embedded 組み込みソフトウェアエンジニアがPythonを始めてみました。そして、第5の戸惑い、今回は組み込みとは切っても切り離せない「C言語」に関しての話題です。 Pythonを扱っていて課題となり得る、処理速度の改善や過去資産の流用など、そんなときに役立つかもしれない、PythonからC言語を呼び出す方法についてのご紹介です。 PythonからC言語、またはC++を呼び出す方法には様々なものがあります。以前の記事でもPython/C API (Python.h)やSWIG、boost.pythonなどを使うことで実現可能とご紹介し
この記事では、双曲正接を計算する CPython 用の C++ 拡張モジュールをビルドし、Python コードからそれを呼び出す手順について説明します。 Python では最初にルーチンを実装して、C++ で同じルーチンを実装した場合の相対的なパフォーマンス向上を示します。 Python インタープリターの機能の拡張には、C++ (または C) で記述されたコード モジュールが一般的に使われます。 拡張モジュールの主要な種類は次の 3 つです。 アクセラレータ モジュール: パフォーマンスの高速化を実現します。 Python はインタープリター言語であるため、C++ でアクセラレータ モジュールを記述してパフォーマンスを向上させることができます。 ラッパー モジュール: 既存の C/C++ インターフェイスを Python コードに公開するか、Python から簡単に使用できる、より Py
概要 C++ で作成した処理を Python から使用するには以下を始めとした複数の方法があります。 Python.h SWIG Boost.Python Shiboken pybind11 どの方法を使用するかは状況によって変わりますが Boost.Python では C++ 内から Python を呼び出せる(今回の例とは逆)という利点があります。Python と C++ の間で相互に呼び出しを行えるので、C++ で作成されたアプリケーションにマクロ言語として Python を組み込む相互に呼び出しを行うといったことができるようになります。 ここでは Linux(Ubuntu 18.04)上で Boost.Python を使用して Python (Python 3)用ライブラリーを作成する方法について説明します。 Boost.Python のビルド まず以下のコマンドで必要なパッケージ
C言語でPythonのモジュールを作ってみる 環境 Python 3.4.6 gcc version 4.8.5 openSUSE Leap 42.3 概要 Python勉強しているときに拡張モジュールの作り方が出てきて自分でも作ってみようと思った次第です。 個人的に色々つまったので、ここにノート代わりに書いておきます。 ゴールまでの流れ C言語でPythonのモジュールを作成 ↓ Pythonを使ってCをビルドする ↓ PythonでimportしてCモジュールを使ってみる C言語でモジュール作成 まず、C言語でPythonのモジュールを作成していきます。 PyObject型を多用します。とりあえず、Hello_worldとpushとpop作りました。 #include <Python.h> //Cの方で作成してPythonで利用する関数はPyObjectを使う static PyObj
1. Extending Python with C or C++¶ It is quite easy to add new built-in modules to Python, if you know how to program in C. Such extension modules can do two things that can’t be done directly in Python: they can implement new built-in object types, and they can call C library functions and system calls. To support extensions, the Python API (Application Programmers Interface) defines a set of fun
ベクトル/行列演算の定番ライブラリEigen (日本語解説のサイトまとめと便利な機能紹介) Eigenとは C++の行列/ベクトルを扱うライブラリ(公式). Eigenの主な特長 行列演算を直感的に書くことが出来る. ヘッダーファイルのみのライブラリのため,ライブラリのビルドやリンクが必要なく組み込やすい. 高速.他のライブラリとの比較ベンチマークはこちら(公式) 解説サイト(すべて日本語) Eigen - C++で使える線形代数ライブラリ(でらうま倶楽部)- 基本的な使い方とも幾何変換,クォータニオンなどの解説もあり. Eigen ー C++で線形代数を!(singular point)- 3回のポストで,幅広い機能について解説している. Robotics/Eigen(NAIST::OnlineText)- 基本的な機能の他に行列分解についても解説あり. Eigenの使い方 Eigenは
The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems. Latest Release: 1.13.2 [Changelog] Get Started! The POCO C++ Libraries have been trusted by C++ developers worldwide for 18 years to build challenging and mission-critical applications in a wide variety of industries.
いまさらながら、C++の正規表現ライブラリを調べている。 C++の正規表現ライブラリ、std::regexは、boost::regexを土台に設計されている。boost::regexの正規表現の文法は、perlなのに対し、std::regexは、ECMAScriptである。この理由は、しっかりと正規表現の文法が定義されていて、外部規格として参照できる品質のものが、perlには存在しないためだ。std::regexはposixと拡張posixとawkとgrepとegrepの正規表現にも対応している。 本記事では、ECMAScriptの正規表現を使う。また、参考のためのECMAScriptのコードも使う。 全体一致 文字列全体が正規表現に一致するかどうかを調べたいとする var re = /1234/ ; var text = "1234" ; var result = re.test( te
この記事は C++ Advent Calendar 2014 の17日目の記事です.前日は @yutopp さんの Boost.Spirit.X3のご紹介 - C++ Advent Calendar 2014(16日目) でした. 最近 Boost.Spirit と LLVM で言語をちまちまと書いているので,Boost.Spirit と LLVM で言語つくるチュートリアルみたいなのを書こうと思ったのですが,チュートリアル用の言語の設計をあれこれ考えているうちに時間が経ってしまいました…ぼちぼち考えているので,別の機会に書きます. というわけで,今回は年の暮れということもあり,今年 GitHub の C++ Trending repositories で見た,気になるライブラリやフレームワーク7つについて紹介しようと思います. 紹介するライブラリやフレームワーク cppformat :
LevelDB is a fast key-value storage library. Googleから新しいプロジェクトが公開された。高速なキーバリューデータベースライブラリ「LevelDB」だ。2条項のBSDライセンスのもとでオープンソースソフトウェアとして提供されている。 対象言語はC++。なるべくほかのライブラリやプラットフォームへの依存が少なくなるように設計および実装されており、アプリケーションへの組み込みやOSへの移植が簡単に実施できるという特徴がある。 LevelDBの提供する機能はキーから値への順序付きマッピングを提供するというもの。SQLに対応したリレーショナルデータベースのような機能は提供していない。割り切った機能に特化しており、基本的にPut(key,value)、Get(key)、Delete(key)で操作を実施する。Chromeに搭載されているIndexedD
博論終わったので仕事の合間にfujimapというライブラリを作ってみました。 fujimap project fujimapは作業領域が非常に小さい連想配列で、文字列からなるKeyを利用して、整数値もしくは文字列からなるValueを登録・参照することができるライブラリです。 今巷では大規模なKey Value Stroe (KVS)が流行っていますがFujimapは一台のマシンのメモリ上で動作することを想定して作成されています.Fujimapの特徴は必要な作業領域量が非常に小さいことです.キー自体を明示的に保存しないため、作業領域は値を格納するのに必要なサイズと、許容するfalse positive(後述)にのみ依存します。 例えば、google N-gramのunigramの約1300万キーワードとそれらの頻度の対数を記録する場合、false positiveを気にしないなら、一キーワー
ここではDXライブラリ使って実際にソフトを動かすところまでを解説します。 下記三つは無償提供されているので何も持っていない方でもOK VisualC++ 2008 Express Edition の方はこちら (XP,Vista の方におすすめ) VisualC++ 2005 Express Edition の方はこちら (セットアップが面倒だけど2008より動作が軽快) BorlandC++ Compiler 5.5 の方はこちら (2005よりも軽快だけどリッチなデバッガがありません) こちらはソフトを購入して所持していないと利用できません VisualStudio 2005 の方はこちら VisualC++ 2005 Express Edition の方はこちら VisualStudio .NET2003 の方はこちら(VisualC++ .NET2003 の方
Visual Studio 2010 は SKU (Editionの数) を整理することがこの間発表された。 これで困るのが、Visual C++ Standard Editionを使っていた人。ATL/MFCとx64コンパイラのサポートがExpress Editionにはなく、Visual Studio 2010 ではStandardがProfessionalに統合されて、$799もするようになる。趣味でフリーソフトやオープンソースソフトを作っている人には手を出しにくい価格だ。 x64はWindows SDKから入手可能なので、 Visual C++ 2010 Express Edition にATLサポートを入れてくれというフィードバックをしてみた。 https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.asp
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く