私がやっていることは、MATLAB-Compiler dll/libを新しいC++プロジェクトに統合することです。デバッグ中にのみmatlab-compiler dll/libをC++で初期化する際のアクセス違反
私はこの指示に従いました:How do I integrate my C++ shared Library generated from MATLABこれはうまく機能しています(ビルドエラーとインテリセンスはうまくいきませんので、すべての必要な情報がそこにあります)。
function output = extest(arg1,arg2)
output = arg1+arg2;
end
とMATLAB関数に対する "デフォルト" のC++コード:
#include "extest.h"
#include <cstdlib>
#include <stdio.h>
int main(int argc, char** argv){
mclmcrInitialize();
if (!mclInitializeApplication(NULL,0)){
std::cerr << "could not initialize the application properly" << std::endl;
return -1;
}
if(!extestInitialize()){
std::cerr << "could not initialize the library properly" << std::endl;
return -1;
}
else{
try{
//code itself (not jet reached therefore removed)
}catch(const mwException& e){
std::cerr << e.what() << std::endl;
return -2;
}
catch(...){
std::cerr << "Unexpected error thrown" << std::endl;
return -3;
}
extestTerminate();
}
mclTerminateApplication();
return 0;
}
デバッガ後の電子しばらくすると、私はテストのための非常にシンプルなmathlabコード/機能を使用してい
行if(!extestInitialize())
を実行しようとすると、次のエラーがスローされます。 DllTestingCpp.exeに0x000002BF72E0EE55で投げ
例外:0xc0000005で:アクセス違反読み取り場所0x0000000000000008。
私は視覚的なスタジオにcontinue >
ボタンを押すと、それが継続された後、その上に20倍のクリックを言うことができますすることができます。 ctrl + F5
(デバッグなし)でコードを開始すると、すべてがうまくいきます。
これがデバッグモードで発生する理由は何ですか?または、このエラーをどのように取り除くことができますか?
PS:extest
は私のlibに名前とMATLAB R2017a 64ビットおよびVisual Studio 2017(x64のとデバッグ)、
ことによってそれを修正しました。見て[ここ](https://stackoverflow.com/questions/44680338/exception-when-initialize-dll-in-c-sharp-generated-by-matlab-compiler/44680616#44680616)。 matlabでjitを無効にしてみてください。ここにいくつかのリンクがあります。 [link1](https://uk.mathworks.com/matlabcentral/answers/79738-calling-new-on-matlab-generated-class-from-dot-net-crushes-the-app-m_interpreter-dll)、[ link2](https://uk.mathworks.com/matlabcentral/answers/293615-mcr_r2013a_win64-net-framework-4-5-2)。私はどのように関連しているかわからない..でも –
こんにちは、それは非常によく似ているが、私はどのようにCの中でソリューションを使用するのか分からない+ + – user1234
matlabコンパイラを起動すると、これは、C#for C++用にコンパイルした場合には依存しません。 –