2010-06-28 5 views
2

Je n'ai jamais posté avant donc je suis désolé si je ne suis pas clair. J'essaie d'utiliser une DLL tierce écrite en C++ en 2005 et tout ce que j'ai c'est une très mauvaise documentation. Je lie dynamiquement à la DLL et à l'aide de la valeur Ordinal lue à partir de Walker de dépendance pour obtenir un pointeur vers une méthode dans la DLL. Tels que (LPFNDDLLZC) GetProcAddress (hHILCdll, (LPCSTR) 15);pwsz chaîne confusion

Mon code est écrit en C++ compilé dans Microsoft VS 6.0, je ne peux pas activer les définitions UNICODE ou je vais casser le code existant.

La documentation pour la DLL indique que tous les arguments de chaîne sont pwsz, ce qui signifie, je crois, un pointeur sur une chaîne de caractères charnière null terminée.

J'ai essayé de passer dans un pointeur vers un short non signé, BSTR et plusieurs autres choses et la DLL se bloque sur la chaîne. Je suis complètement perdu quant à pourquoi, je crois que cela a à voir avec ma construction de chaîne pwsz et je suis perdu quant à la façon de résoudre ce problème. J'ai lu des articles connexes, mais rien ne fonctionne.

Quelqu'un peut-il aider? Je peux poster un code si besoin est.

Merci.

+0

Documente la déclaration LPFNDDLLZC. –

+0

Je ne parle pas la notation hongroise, alors qu'est ce que "pwsz"? Aussi, qu'est ce que "LPFNDDLLZC"? –

+0

typedef long (__stdcall * LPFNDDLLZC) (long x, long y, long long z, long a, long b, long long c, long d, non signé court * pwszmsg); LPFNDDLLZC est juste mon nom de pointeur à la méthode dans la DLL. Je ne suis pas non plus sur la notation hongroise, je pensais que les développeurs ont cessé de l'utiliser depuis longtemps. Quoi qu'il en soit, ils me disent ici que c'est un pointeur vers une chaîne de caractères large null terminée. La DLL est venu avec aucun fichier d'en-tête ou fichier .def donc je vais sur la petite documentation que j'ai pour les signatures de méthode. –

Répondre

2

Vous pouvez utiliser MultiByteToWideChar pour transformer votre LPSTR dans un LPWSTR qui devrait résoudre votre problème.

+0

Merci, mais j'ai essayé et j'ai obtenu les mêmes résultats. –

0

Merci à tous. J'ai finalement obtenu une copie de la source de DLL et mon problème n'était pas ma construction de chaîne c'était la documentation pauvre. Il s'avère qu'ils utilisent des doubles pointeurs, corrige une tonne de choses!