質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Boost

Boost (ブースト)は、C++の先駆的な開発者のコミュニティ、 またそのコミュニティによって公開されているオープンソースライブラリのことを指します。

x86_64

x86-64は、 x86命令を64ビット幅のデータやメモリアドレスに対応できるよう拡張した命令セットです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

4532閲覧

Python(64bit版)でC++(x86)のプログラムを読み込みたい

Amanokawa

総合スコア41

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Boost

Boost (ブースト)は、C++の先駆的な開発者のコミュニティ、 またそのコミュニティによって公開されているオープンソースライブラリのことを指します。

x86_64

x86-64は、 x86命令を64ビット幅のデータやメモリアドレスに対応できるよう拡張した命令セットです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/06/02 13:09

現在visual studioのx86で動くC++のプログラムを作ってまして、最終的にはこれをBoostなどでラップしてpythonで読み込みたいと考えております。
ですがpythonは64bitを使っているのでもしかしたら読み込むことができないのではないかと気づきました。
C++とpythonの関係には疎いのでラップをして読み込むことが可能であるかご教示お願いします。

現在の状況
・使用しているC++用のDLLが32bit限定であるのでx64でコンパイルすることができません
・pythonはCUDAの関係で32bit版を使用することができません
・ラップはBoostで行こうかなと考えておりました

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2020/06/02 14:52

Visual Studio なら64bit(x64)コンパイルできるけど、敢えてx86なワケがあるんですか?
退会済みユーザー

退会済みユーザー

2020/06/03 04:50

64bitコンパイルしたら32bitDLLをロード出来ないのでは。
episteme

2020/06/03 07:18

「使用しているC++用のDLLが32bit限定」なのか...今どきそんなんが。
guest

回答1

0

ベストアンサー

とりあえずpythonは置いとくとして、基本的に64bitプロセスからは32bitDLLは読み込めません。
何らかの方法でプロセス間通信するとかになります。
Windows x64環境で32bit/64bit両プロセスから利用可能なDLLをつくる

投稿2020/06/02 13:37

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Amanokawa

2020/06/03 02:13

C++側を64bitでコンパイルできるようにDLLの読み込み方を工夫するわけですね。 その方針を検討してみます。
退会済みユーザー

退会済みユーザー

2020/06/03 04:29 編集

リンク先の方法だと、32bitDLL<->中継用COMサーバプロセス(32bit)<-RPC通信->利用側プロセス(64bit) という感じになると思います。結局のところ通信を挟むしかないので、64bitプロセスから32bitDLLをネイティブに呼び出せる訳では無いという点に注意が必要です。COMを使う方法はあくまで一例で、プロセス間通信の方法は色々ありますので、呼び出し頻度、要求速度、送受信データ量、ユースケースでどういう呼び出し方法、受け渡し方法を取るかはよく考える必要があります。(ソケット、名前付きパイプ、メモリマップトファイル、gRPC、ZeroMQ etc)
Amanokawa

2020/06/03 07:15

調べてみるとなかなか複雑なことをしないといけないようですね。 参考になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問