System.AccessViolationException avec c_str
Bonjour,
J'essaie de coder une application pour utiliser une caméra GigE Basler Scout. Pour cela j'utilise visual studio 2008 et le SDK fourni par le fabriquant. L'application est basée sur les windows form en C++/CLI.
J'ai un problème lorsque j'essaie de récupérer l'adresse IP de la caméra. Le SDK prévoit une méthode GetIPAddress pour cela. Celle-ci me retourne un objet de type Pylon::String_t.
Ce type permet de faire appel à des fonctions utilisées par les std::string comme c_str. Dans le but d'afficher le résultat dans un label, je cherche à passer le résultat en System::String via :
Code:
System::String ^sIP = gcnew System::String(pBgdi.GetIpAddress().c_str());
La compilation se passe sans problème mais j'ai une erreur à l'exécution. Je me retrouve avec :
Citation:
Une exception non gérée du type 'System.AccessViolationException' s'est produite dans TestPylonNET.exe
Informations supplémentaires*: Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée.
alors que sIP prend bien la valeur voulue (adresse en XXX.XXX.XXX.XXX)
Work around via try{} .. catch {}
J'ai fini par trouvé un moyen pour faire fonctionner le code en DEBUG. Tout simplement :
Code:
1 2 3 4 5 6 7
| try
{
sIP = gcnew System::String(pBgdi.GetIpAddress().c_str());
}
catch(Exception ^)
{
} |