Matlab は DLL ファイルのメモを生成します

教えていない失敗例。

1 MinGW64 C/C++ コンパイラをダウンロード

ダウンロード リンク: https://sourceforge.net/projects/mingw-w64/files/
Baidu クラウドのダウンロード リンク: リンク: https://pan.baidu.com/s/11erb1P3KLAFD1UxCJIZ8Tw?pwd=jvh6
抽出コード: jvh6
1. をクリックします。Files:
ここに画像の説明を挿入

2. 下の図が表示されるまで引き下げ、 をクリックしますx86_64_win32_sjlj(使用しているMATLABはR2019aで、バージョン6.4.0であれば正常にインストールできます。)
ここに画像の説明を挿入
3. ダウンロード後の解凍先フォルダーにはスペースが入っていないことを確認してください!親フォルダーにもスペースを含めないでください。Program Files動作しないでしょう。
ここに画像の説明を挿入
4. システム環境変数を追加します。
(1) [マイ コンピュータ] を右クリックし、[プロパティ] をクリックします。
ここに画像の説明を挿入

(2) 「システムの詳細設定」をクリックします。
ここに画像の説明を挿入

(3) [詳細設定]、[環境変数] をクリックします。
ここに画像の説明を挿入

(4) [システム環境変数]、[新規作成] をクリックします。
ここに画像の説明を挿入
常に確認するだけです。

2 Matlab のインストールと構成

matlab コマンド ラインに次のように入力します。

setenv('MW_MINGW64_LOC','C:\mingw64')
mex -setup
mex -setup c++

ここに画像の説明を挿入

3 コンパイルテスト

.m 関数を作成します。関数 (関数) のみが dll/lib/c/h ファイルをコンパイルして生成できます。
ここに画像の説明を挿入
test_func.m

function [add,minus] = test_func(num1,num2)
    add = num1 + num2;
    minus = num1 + num2;
end

保存後、このフォルダーに次のコマンド ラインを入力します。

mcc -W cpplib:test_func -T link:lib test_func.m -C

説明:
-W はコンパイル後のパッケージ化形式を制御します。
-T はターゲットを意味し、link:lib はライブラリ ファイルに接続されるターゲットを意味し、ターゲットの名前は .m 関数の名前です。
その他の特定の意味は、mcc –help コマンドを使用して確認できます。パラメータの大文字と小文字に注意してください。
ここに画像の説明を挿入
フォルダーに入ると、dll/lib/c/h ファイルがコンパイルされて生成されていることがわかります。
ここに画像の説明を挿入

4 別のコンパイル方法

コマンドライン入力:

mbuild -setup
mex -setup C++ -client MBUILD
deploytool

ポップアップがクリックされるまで待ちますLibrary Compiler
ここに画像の説明を挿入
以下の図に従って、「C++ 共有ライブラリ」をクリックし、プラス記号 をクリックすると+、下部に生成される 4 つのファイルが表示されます。「」をクリックしPackage、「」をクリックします确定
ここに画像の説明を挿入

操作が完了すると、フォルダー内に .prj ファイルとフォルダーが生成されます。

文件路径:
test_func.m
test_func.prj
test_func
			- for_redistribution
									- MyAppInstaller_web.exe
			- for_redistribution_files_only
									- v2
									- test_func.dll						*****
									- test_func.h						*****
									- test_func.lib						*****
									- GettingStarted.html
			......

アスタリスクの付いたファイルは*****必須です。

5 この DLL は使用できません。

test_func.h、test_func.dll、test_func.lib を Qt プロジェクト ディレクトリにコピーし、pro ファイルの下にさまざまな matlab ファイル パスを追加して、main.cpp ファイルの下の .h ファイル内の関数を使用しますが、コンパイルは完了していません。合格しました!ファイルが見つからないか、アクセス許可がブロックされています。


参考リンク:
https://www.cnblogs.com/zzzsj/p/14630559.html

おすすめ

転載: blog.csdn.net/qq_45362336/article/details/130684967