MCR- und .NET-Inkompatibilität

8

Ich versuche eine Matlab (R2010b) Anwendung zu kompilieren, die ein .NET Modul verwendet, aber ich habe ein Problem mit der Inkompatibilität zwischen dem MCR und dem .NET Modul:

  • Das .NET-Modul ist mit Visual Studio 2010 kompiliert.
  • MCR ist für die Verwendung von Visual Studio 2010 konfiguriert.
  • Die Anwendung enthält auch ein paar Mex-Dateien, die mit Visual Studio 2010 erstellt wurden und funktionieren sowohl in Matlab als auch mit MCR einwandfrei.

Wenn ich die Assembly aus dem Matlab-CLI lade, funktioniert alles einwandfrei, aber sobald ich die App kompiliert habe und sie von cmd.exe ausgeführt habe, wird ein Fehler ausgegeben, der besagt, dass die Assembly mit einer Laufzeit erstellt wird, die aktueller ist geladen. Ich denke, dass Matlab R2010b mit Visual Studio 2008 gebaut wurde und glaube, dass dies das Problem ist, aber ich frage mich, ob jemand eine Lösung für das Problem hat?

    
trondd 13.12.2010, 12:49
quelle

1 Antwort

7

Die Lösung besteht darin, eine Anwendungskonfigurationsdatei (foo.exe.config für die Anwendung foo.exe) neben der kompilierten exe mit dem folgenden Eintrag bereitzustellen:

%Vor%

Die MATLAB .NET-Schnittstelle wurde mit .NET Framework 2.0 erstellt, was bedeutet, dass die 2.0 CLR geladen wird, wenn keine App-Konfigurationsdatei vorhanden ist. Wenn sie in MATLAB ausgeführt werden, geben die <supportedRuntime> -Einträge aus der Konfigurationsdatei MATLAB an, 4.0 CLR zu laden, falls verfügbar.

    
Shaf 01.07.2011 17:02
quelle