Unable to find an entry point named 'InterlockedIncrement' in DLL 'kernel32.dll' - VS2005@Win7 64 bit

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

Question

I have a problem with my Visual Studio 2005 C# project. I have been using it under Windows XP, since Monday. Then my laptop broke down and on my new one I have Windows 7 64 bit and I am still using VS 2005.

There is no problem with compilation of the source, but when I run the program it breaks on the line below

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

I get the error:

EnrtyPointNotFoundExcepition was unhalted

Unable to find an entry point named 'InterlockedIncrement' in DLL 'kernel32.dll'

I am trying to connect with a Postgres 8.4 database using PostgresODBC 64 bit driver.

Any solution or workaround is welcome. I need to stress that the solution I am building needs to run under Windows XP 32bit.

Updated information about the issue (from my respones to the comments but not only):

  1. When I tried to add new connection to my VS project I got the message ERROR [IM014] [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application. I use Windows 7 64 bit, Postgres ODBC 64 bit Driver ver. 9.00.0200, Postgres 8.4 32 bit.
  2. I have never used Dependency Walker before. But I have opened kernel32.dll from both \system32 and \SysWOW64 and InterlockedIncrement is present in files from both folders.
  3. I have some TableAdapters, and I use them to fetch data from the Postgres. It was set when I was using WinXP, and it still works. On the other hand, when in VS2005 in the properties of TableAdapter I click on "..." next to Data->CommandText it displays a message Failed to call the ODBC driver connection utility.

EDIT: I added points 1-3 above.

Was it helpful?

Solution 4

I think I have solved problem, although I am not sure. However, I installed the 32bit version of Postgres ODBC driver and I used 32bit version of ODBC administrator C:\Windows\SysWOW64\odbcad32.exe to configure the connection. I found the information about the 32bit ODBC Administrator in the thread 64-bit-odbc-exception where one of the users refers to MSDN: Managing Data Sources.

I thought that I needed the same version of ODBC driver (regarting to number of bits) as my OS. I have also tried 64bit version of Postgres and ODBC driver, but it also did not want to work for me. The only solution was 32bit version of Postgres, and ODBC, and connection set in 32bit ODBC Administrator.

Regarding my VS project, I have Project->Properties->Build->Platform target set to x86.

Hope it helps somebody in the future.

OTHER TIPS

I have just had exactly the same issue, and found a surprisingly simple solution: Use System.Data.Odbc instead of Microsoft.Data.Odbc in the imports.

On 64 bit windows these are not real functions exported from kernel32.dll - they are compiler intrinsics instead. The code that is P/Invoking that function should be using the Interlocked managed class instead.

They are intrinsics on 32-bit windows too nowadays, but the exported functions are still available from kernel32.dll on 32-bit windows for app compat reasons. Not a problem for 64 bit because there were no apps to be compatible with.

My guess is there's something wrong with your driver. I can't be sure, but you might want to consider using something else. Npgsql looks pretty decent, and it's 100% C# code, so it should work on Windows XP 32-bit without any issues.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top