Articles of pinvoke

PInvokeStackImbalance Appel C # vers une fonction C ++ non gérée

Après avoir basculé vers VS2010, l’assistant de débogage géré affiche une erreur concernant une stack non équilibrée provenant d’un appel à une fonction C ++ non gérée à partir d’une application C #. Les suspects habituels ne semblent pas être à l’origine du problème. Y a-t-il autre chose que je devrais vérifier? L’application C ++ […]

Fonction PInvoke pour C qui renvoie char *

J’essaie d’écrire du code C # qui appelle une méthode à partir d’une DLL non gérée. Le prototype de la fonction dans la DLL est le suivant: extern “C” __declspec(dllexport) char *foo(void); En C #, j’ai d’abord utilisé: [DllImport(_dllLocation)] public static extern ssortingng foo(); Il semble fonctionner à la surface, mais je reçois des erreurs […]

Un appel à la fonction PInvoke ” a déséquilibré la stack

Je reçois cette erreur bizarre sur certains trucs que j’utilise depuis longtemps. C’est peut-être une nouveauté dans Visual Studio 2010 mais je n’en suis pas certain. J’essaie d’appeler une fonction non écrite écrite en C ++ à partir de C #. D’après ce que j’ai lu sur Internet et le message d’erreur lui-même, cela a […]

Pourquoi les appels cdecl sont-ils souvent incompatibles avec la convention P / Invoke «standard»?

Je travaille sur une base de code assez grande dans laquelle la fonctionnalité C ++ est P / Invoked from C #. Il y a beaucoup d’appels dans notre base de code tels que … C ++: extern “C” int __stdcall InvokedFunction(int); Avec un C # correspondant: [DllImport(“CPlusPlus.dll”, ExactSpelling = true, SetLastError = true, CallingConvention […]

Performances C # – Utilisation de pointeurs non sécurisés au lieu d’IntPtr et de Marshal

Question Je porte une application C dans C #. L’application C appelle beaucoup de fonctions à partir d’une DLL tierce, j’ai donc écrit des wrappers P / Invoke pour ces fonctions en C #. Certaines de ces fonctions C allouent des données que je dois utiliser dans l’application C #, j’ai donc utilisé IntPtr , […]

Utiliser une DLL 32 bits ou 64 bits en C # DllImport

Voici la situation, j’utilise un dll basé sur C dans mon application dot.net. Il y a 2 DLL, une est 32 bits appelée MyDll32.dll et l’autre est une version 64 bits appelée MyDll64.dll. Il existe une variable statique contenant le nom du fichier DLL: ssortingng DLL_FILE_NAME. et il est utilisé de la manière suivante: [DllImport(DLL_FILE_NAME, […]

en utilisant une classe définie dans une DLL c ++ dans le code c #

J’ai une dll qui a été écrite en c ++, je dois utiliser cette dll dans mon code c #. Après la recherche, j’ai trouvé que l’utilisation de P / Invoke me permettait d’accéder à la fonction dont j’avais besoin, mais ces fonctions sont définies dans une classe et utilisent des variables de membre privées […]

Profilage d’un pinvoke dynamic

Je travaille sur le profileur MSIL et ManagedToUnmanagedTransition rencontré des problèmes avec les ManagedToUnmanagedTransition et UnmanagedToManagedTransition de l’interface ICorProfilerCallback . Ce que je veux récupérer, c’est une information sur la méthode appelée (nom et nom du module dans lequel elle réside). Jusqu’à présent, ça marchait bien. Jusqu’à ce que ce qu’on appelle un pinvoke dynamic […]

Comment appeler C ++ / CLI depuis C #?

J’ai une classe implémentée en C ++ qui est responsable du calcul arithmétique du programme et d’une interface utilisant WPF. Je traite l’entrée avec C # mais comment puis-je utiliser ma classe C ++? J’ai vu des commentaires sur la création d’une classe d’encapsuleur C ++ gérée pour interagir avec elle, mais je ne sais […]

Comment puis-je supprimer minimiser et agrandir à partir d’une fenêtre redimensionnable dans WPF?

WPF ne permet pas d’avoir une fenêtre qui permet de redimensionner mais n’a pas de boutons maximaux ou minimaux. Je voudrais pouvoir créer une telle fenêtre pour avoir des boîtes de dialog redimensionnables. Je sais que la solution signifie utiliser Pinvoke mais je ne sais pas quoi appeler et comment. Une recherche sur pinvoke.net n’a […]