No se puede encontrar un punto de entrada llamado 'InterlockedIncrement' en dll 'kernel32.dll' - vs2005@win7 64 bit

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

Pregunta

Tengo un problema con mi proyecto Visual Studio 2005 C#. Lo he estado usando en Windows XP, desde el lunes. Luego, mi computadora portátil se rompió y en mi nuevo tengo Windows 7 de 64 bits y todavía estoy usando VS 2005.

No hay problema con la compilación de la fuente, pero cuando ejecuto el programa se rompe en la línea a continuación

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

Recibo el error:

EnrtyPointNotFoundExcepition no se calculó

No se puede encontrar un punto de entrada llamado 'InterlockedIncrement' en dll 'kernel32.dll'

Estoy tratando de conectarme con una base de datos Postgres 8.4 utilizando el controlador PostgResodBC de 64 bits.

Cualquier solución o solución es bienvenida. Necesito enfatizar que la solución que estoy construyendo debe ejecutar debajo de Windows XP 32bit.

Información actualizada sobre el problema (de mis respuestas a los comentarios pero no solo):

  1. Cuando intenté agregar una nueva conexión a mi proyecto VS, recibí el mensaje. Error [IM014] [Microsoft] [ODBC Manager del controlador] El DSN especificado contiene un desajuste de arquitectura entre el controlador y la aplicación. Uso Windows 7 de 64 bits, Postgres ODBC 64 Bit Driver Ver. 9.00.0200, Postgres 8.4 32 bits.
  2. Nunca he usado Caminante de dependencia antes de. Pero he abierto kernel32.dll de ambos System32 y Syswow64 y Interlockedincrement está presente en archivos de ambas carpetas.
  3. tengo algunos Toteadapters, y los uso para buscar datos de Postgres. Estaba establecido cuando estaba usando WinXP, y todavía funciona. Por otro lado, cuando está en VS2005 en las propiedades de Toteadapter Hago clic en "..." junto a Data-> commandText Muestra un mensaje no pudo llamar a la utilidad de conexión del controlador ODBC.

Editar: Agregué puntos 1-3 arriba.

¿Fue útil?

Solución 4

Creo que he resuelto un problema, aunque no estoy seguro. Sin embargo, instalé la versión de 32 bits del controlador ODBC Postgres y Usé la versión de 32 bits del administrador de ODBC C: windows syswow64 odbcad32.exe Para configurar la conexión. Encontré la información sobre el administrador de ODBC de 32 bits en el hilo 64 bit-ODBC-Exception donde uno de los usuarios se refiere a MSDN: Gestión de fuentes de datos.

Pensé que necesitaba la misma versión del controlador ODBC (en lo que respecta al número de bits) como mi sistema operativo. También he probado la versión de 64 bits de Postgres y ODBC Driver, pero tampoco quería funcionar para mí. La única solución era la versión de 32 bits de Postgres, y ODBC, y conjunto de conexión en Administrador ODBC de 32 bits.

Con respecto a mi proyecto VS, tengo Project-> Propiedades-> Build-> Target de plataforma ajustado a x86.

Espero que ayude a alguien en el futuro.

Otros consejos

Acabo de tener exactamente el mismo problema y encontré una solución sorprendentemente simple: usar System.Data.ODBC en lugar de Microsoft.Data.ODBC en las importaciones.

En las ventanas de 64 bits, estas no son funciones reales exportadas desde kernel32.dll: son intrínsecs compiladores en su lugar. El código que está p/invocación de esa función debe estar utilizando la clase administrada entrelazada en su lugar.

Son intrínsecos en ventanas de 32 bits también hoy en día, pero las funciones exportadas todavía están disponibles en Kernel32.dll en Windows de 32 bits por razones de compatibilidad de aplicaciones. No es un problema durante 64 bits porque no había aplicaciones para ser compatibles.

Supongo que hay algo mal con su conductor. No puedo estar seguro, pero es posible que desee considerar usar algo más. Npgsql Se ve bastante decente y es un código C# 100%, por lo que debería funcionar en Windows XP de 32 bits sin ningún problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top