Impossible de trouver un point d'entrée nommé 'InterlockedIncrement' DLL 'kernel32.dll' - VS2005 @ Win7 64 bits

StackOverflow https://stackoverflow.com/questions/5339277

Question

J'ai un problème avec mon projet Visual Studio 2005 C #. Je l'ai utilisé sous Windows XP, depuis lundi. Ensuite, mon portable est tombé en panne et sur mon nouveau je Windows 7 64 bits et je suis encore en utilisant VS 2005.

Il n'y a pas de problème avec la compilation de la source, mais quand je lance le programme, il se casse sur la ligne ci-dessous

OdbcConnection cn;
cn = new OdbcConnection("dsn=My_dsn_name;");

J'obtiens l'erreur:

EnrtyPointNotFoundExcepition unhalted Was

Impossible de trouver un point d'entrée nommé 'InterlockedIncrement' dans DLL 'kernel32.dll'

Je suis en train de se connecter avec une base de données Postgres 8.4 en utilisant le pilote bit PostgresODBC 64.

Toute solution ou solution de contournement est la bienvenue. Je dois souligner que la solution que je construis a besoin pour fonctionner sous Windows XP 32 bits.

Des informations actualisées sur la question (de mes respones aux commentaires mais non seulement):

  1. Quand j'ai essayé d'ajouter de nouvelles connexion à mon projet VS je reçu le message ERREUR [IM014] [Microsoft] [ODBC Driver Manager] Le DSN spécifié contient un décalage d'architecture entre le pilote et l'application . J'utilise Windows 7 64 bits, Postgres ODBC 64 bits pilote ver. 9.00.0200 , Postgres 8.4 32 bits.
  2. Je n'ai jamais utilisé Dépendance Walker avant. Mais je l'ai ouvert kernel32.dll à la fois \ system32 et \ SysWOW64 et InterlockedIncrement est présente dans les fichiers à la fois dossiers.
  3. J'ai une TableAdapters , et je les utilise pour récupérer les données des Postgres. Il a été mis quand j'utilisais Windows XP, et il fonctionne toujours. D'autre part, lorsque dans VS2005 dans les propriétés de TableAdapter Je clique sur " ... " data-> CommandText il affiche un message a échoué appeler l'utilitaire de connexion du pilote ODBC.

EDIT: J'ai ajouté des points 1-3 ci-dessus

.
Était-ce utile?

La solution 4

Je pense que j'ai problème résolu, même si je ne suis pas sûr. Cependant, j'ai installé la version 32 bits du pilote ODBC Postgres et je 32bit version de l'administrateur ODBC C: \ Windows \ SysWOW64 \ odbcad32.exe pour configurer la connexion. J'ai trouvé les informations sur l'Administrateur ODBC 32 bits dans le thread 64 bits-odbc-exception où l'un des utilisateurs se réfère à MSDN: Gestion des sources de données .

Je pensais que je devais la même version du pilote ODBC (regarting au nombre de bits) comme mon OS. J'ai aussi essayé la version 64 bits de Postgres et pilote ODBC, mais il ne voulait pas travailler pour moi. La seule solution était 32bit version de Postgres, et ODBC et jeu de connexion 32bit ODBC Administrator .

En ce qui concerne mon projet VS, j'ai Projet-> Propriétés-> Build-> Plate-forme cible ensemble x86 .

il aide quelqu'un l'espoir dans l'avenir.

Autres conseils

Je viens d'avoir exactement la même question, et a trouvé une solution étonnamment simple: Utilisation System.Data.Odbc au lieu de Microsoft.Data.Odbc dans les importations.

Sur Windows 64 bits ne sont pas ces fonctions réelles exportées à partir kernel32.dll - ils sont compilateur intrinsics à la place. Le code qui est P / Invoquer cette fonction devrait utiliser le Interlocked géré classe à la place.

Ils sont intrinsics trop aujourd'hui Windows 32 bits, mais les fonctions exportées sont toujours disponibles à partir kernel32.dll sur Windows 32 bits pour l'application compat raisons. Pas un problème pour 64 bits, car il n'y avait pas des applications pour être compatible avec.

Je suppose il y a quelque chose de mal avec votre pilote. Je ne peux pas être sûr, mais vous voudrez peut-être envisager d'utiliser autre chose. Npgsql semble assez décent, et il est 100% du code C #, il devrait donc fonctionner sous Windows XP 32 bits sans aucun problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top