Hallo Zusammen, Entwicklungsumgeben: Visual Studio 2015 prof Programmiersprache: C++ Problembeschreibung: Migrieren von alten projekt (Visual Studio 2008 "c++") zu Visual Studio 2015 " c++". Beim migrieren des Projekts lauft fast alles Okay, wenn es auch das .exe File gestartet wird. Beim .exe File starten bekomme ich folgende Fehlermeldung "Seh bitte Anhang" Meine Frage an euch: Habt ihr Erfahrungen damit? Was muss man einstellen um so eine Problem umzugehen? Danke in voraus
Das ist kein C++, sondern die .Net-Perversion "Managed C++" bzw. "C++/CLI". Die Meldung lässt mich vermuten, daß Du versuchst, eine für .Net 2.x erzeugte DLL zu laden, während Dein Programm aber .Net 4.x verwendet. Sofern Du die DLL selbst als Quelltext hast, könntest Du versuchen, sie ebenfalls auf den neueren Compiler und damit die .Net 4.x umzuziehen. Ansonsten müsstest Du nach Problemen beim Mischen verschiedener .Net-Versionen suchen; ich kann Dir da nicht weiterhelfen, da ich aus verschiedenen Gründen die Finger vom .Net-Geraffel lasse.
Hi, Danke für die Antwort. Mir ist schon klar, dass es um eine Mischung von .Net Framwork sich handelt und wie du geschrieben hast handelt es sich nicht um eine C++. Problem ist: Ich habe es nur dieses DLL keine Source Code sonst hätte ich das neue mit dem entsprechenden .NET Framwork erstellt. Die Frage ist: Wie gehe ich mit solchen DLL um ? Danke
DanielBerlin schrieb: > Die Frage ist: Wie gehe ich mit solchen DLL um ? Probiere mal, deine App.config zu ändern (falls nicht vorhanden, erzeugen: Projekt-Kontextmenü -> Add -> New Item -> Application Configuration File - oder wie auch immer in der deutschen Version):
1 | <?xml version="1.0" encoding="utf-8" ?>
|
2 | <configuration>
|
3 | <startup useLegacyV2RuntimeActivationPolicy="true"> |
4 | <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> |
5 | </startup>
|
6 | <runtime>
|
7 | <NetFx40_LegacySecurityPolicy enabled="true"/> |
8 | </runtime>
|
9 | </configuration>
|
Letztlich muss sich nach dem Buildprozess eine Config-Datei mit dem richtigen Namen (<deineanwendung>.exe.config) und diesem Inhalt im Verzeichnis deiner Anwendung befinden. Man kann die Datei (...exe.config) natürlich auch direkt von Hand in einem Editor erzeugen - z.B., wenn man nur ein Programm zum Laufen bekommen will (*) und den Quellcode nicht hat. (*) Beispiel: Beitrag "Re: .NetFramework 3.5" BTW: C++/CLI ist eigentlich nicht zur Erstellung von "kompletten" Anwendungen gedacht, sondern als Schnittstelle zwischen .NET und Win32. Es gibt auch schon lange kein Template mehr für C++-GUI-Anwendungen in VS.
Hi Zusammen, @Peter 1)Ich glaube die App.conf ist was c# spezifisch und ich weiss es nicht wie ich das in C++ erstellen kann. 2)Ich habe es auch in dem Projekt wo dieses Dll benutzt das ".vcxproj" Datei um <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> erweitert. Grund dafür: Die verwendete DLL ist mit dem 2.0 Version .NET Frawork erstellt wurde. Diese Änderung hatte auch nicht gebracht: Ich bekomme immer die gleiche Fehlermeldung "seh Anhang" Ich habe denn einen andere Weg genommen : Ich habe einen Dummy Console Application erstellt und einfach der Dll aufgerufen: Hier einen Code Abschnitt:
1 | #using "HID Class.dll" |
2 | |
3 | #include "stdafx.h" |
4 | |
5 | int main() |
6 | { |
7 | HIDClass::MCHPHIDClass::HIDClassVersion(); |
8 | return 0; |
9 | } |
Build ist Okay Sobald ich die exe file aufrufe kommt immer zu den gleichen Fehler "Seh Anhang" Mir fehlen eifach die Lösungsansätze
Was ich noch vergessen habe: Das Projekt lauft unter Visual Studio 2008 "C++" einwandfrei. Beim Visual Studio 2015 scheint es Probleme zu haben.
Hallo Zusammen, ich bekomme folgende Fehlermeldung, wenn die Application (.exe) gestartet wird. Von dieses HID Class.dll habe ich leider keine Source Code sonst hätte ich ihm neue erstellt. Sagt es euch dieses Fehlermeldung was?
DanielBerlin schrieb: > Sagt es euch dieses Fehlermeldung was? Ja, du verwendest eine .NET 2.0-DLL in einem, .NET 4-Programm. > Ich glaube die App.conf ist was c# spezifisch und ich weiss es nicht > wie ich das in C++ erstellen kann. Ja, stimmt, da lag ich falsch (mache nicht viel mit C++/CLI). Das müsste man "von Hand" in den Build-Prozess einbinden; in C# geht das quasi automatisch. Was passiert, wenn du die angehängte Datei in den Ordner deine Anwendung kopierst, umbenennst (-> "name" in Name der exe, also bei "foo.exe" müsste die Datei "foo.exe.config" heißen) und dein Programm dort startest?
Hi Peter, 1000000000000000000000 Danke Es funktioniert :-). Kannst du bitte einbisschen erläutern was macht diese Config Datei? In C++ muss diese config datei immer manuel eingefügt werden?
PIC benutzer schrieb im Beitrag #4803122: > Kannst du bitte einbisschen erläutern was macht diese Config Datei? Hier gibt es eine längliche Erkärung: https://minibrain.files.wordpress.com/2012/09/marklio-what-is-uselegacyv2runtimeactivationpolicy-for_.pdf > In C++ muss diese config datei immer manuel eingefügt werden? Du kannst auch per Post-Build-Event (oder Pre-Build oder Pre-Link, das ist in diesem Fall egal) kopieren. Dazu die Datei aus meinem vorigen Beitrag in deinen Projektordner kopieren (wo dein Quellcode liegt) und in "App.config" umbenennen. Dann in den Projekteigenschaften unter Build Events -> Post-Build Event das hier als neues Kommando einfügen: copy $(ProjectDir)App.config $(TargetDir)$(TargetFileName).config /Y Achte darauf, dass dabei im Projekt-Dialog (nicht im VS-Hauptfenster) oben links "All Configurations"/"Alle Konfigurationen" gewählt ist, sonst stellt du irgendwann auf "Release" (oder umgekehrt auf Debug oder eine andere Konfiguration) um und es funktioniert nicht mehr. Das Kommando kopiert die App.config in jeder Konfiguration ins Verzeichnis der exe und benennt sie automatisch korrekt.
Peter Pan schrieb: > copy $(ProjectDir)App.config $(TargetDir)$(TargetFileName).config /Y Ich danke dir nochmal für die ausführliche Antwort. Nur zu ergänzen: beim C++ in Projekteigenschaften ist die folgende Ergänzung nötig: copy "$(ProjectDir)$(TargetFileName).config " "$(TargetDir)$(TargetFileName).config " Syntaktisch muss so geschrieben werden sonst bekommt man komische Error.
Die beiden Leerzeichen zwischen .config und den folgenden Anführungszeichen solltest Du besser weglassen.
Peter Pan schrieb: > Du kannst auch per Post-Build-Event (oder Pre-Build oder Pre-Link, das > ist in diesem Fall egal) kopieren. Alternative: Die Datei direkt zum Projekt hinzufügen und in den Properties der Datei (nicht des Projektes) den Typ auf 'Custom Build' stellen. Dann kann man den copy Befehl auch da eingeben
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.