こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PythonからMFCを利用

Python3.x.xから、VC++で作成されたDLLを呼び出してMFCを起動する事は出来ますか?もしこれが可能でしたら、その方法を教えてください。

投稿日時 - 2019-05-24 00:04:47

QNo.9619449

困ってます

質問者が選んだベストアンサー

あー。ご要望は理解できますが、単純な話ではないです。
MFCって、そんなことが上手くできるよう設計されてないからです。

やるとしたら標準CのDLLの中から、フルのMFC EXEを呼び出し
それとやり取りした結果を返す感じでしょうか。
これをやるより、どこかでWin32 APIを呼び出すほうが現実的な気がします。
(ちょっとしたダイアログ表示する程度ならですが)

MFCはクラスライブラリとは付いていますが、
Windowsプラットフォームのまんまです。
Win32 APIをラップしただけというイメージです。

以下英語ですが、今回と似たようなやり取りをしています。
https://stackoverflow.com/questions/7346140/using-an-mfc-dll-file-with-python-3-2

以上、参考にならなかったらごめんなさい。

投稿日時 - 2019-05-24 13:05:46

お礼

回答、ありがとうございます。No2さんの回答と併せて考えると、MFCをDLL化してPythonから呼び出すしかないようですね。ただ、単純に呼び出すだけだとMFCが動作中はPythonの処理が次に移れないですね。質問ではやりたいことが明確になっていなかったですが、動作中のMFCを操作して、その出力をPythonに取り込んだり、PythonからMFCの動作を制御したりすることです。たぶん、DLL化したMFCをマルチスレッドで動くようにすればいいような気がします。この方法は、別に質問を出します。

投稿日時 - 2019-05-31 00:22:50

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

フツーにDLL呼び出せば、MFC使うのはOSなんかが処理してくれるのでは。
hoge.dllにtest()って関数があったとして、

from ctypes import cdll
import ctypes

dll = ctypes.cdll.LoadLibrary('hoge.dll')
c_test = dll.test

test()

投稿日時 - 2019-05-24 13:09:40

お礼

回答、ありがとうございます。DLLを呼び出すという手がありますね。

投稿日時 - 2019-05-31 00:16:11

あなたにオススメの質問