【发布时间】:2011-07-17 09:25:21
【问题描述】:
我的 Visual Studio 2005 C# 项目有问题。从星期一开始,我一直在 Windows XP 下使用它。然后我的笔记本电脑坏了,在我的新笔记本电脑上我有 Windows 7 64 位,我仍在使用 VS 2005。
源代码编译没有问题,但是当我运行程序时,它在下面一行中断
OdbcConnection cn;
cn = new OdbcConnection("dsn=My_dsn_name;");
我得到错误:
EnrtyPointNotFoundExcepition 未停止
无法在 DLL“kernel32.dll”中找到名为“InterlockedIncrement”的入口点
我正在尝试使用 PostgresODBC 64 位驱动程序连接 Postgres 8.4 数据库。
欢迎任何解决方案或解决方法。我需要强调的是,我正在构建的解决方案需要在 Windows XP 32bit 下运行。
有关该问题的更新信息(来自我对 cmets 的回复,但不仅限于此):
- 当我尝试向我的 VS 项目添加新连接时,我收到消息 ERROR [IM014] [Microsoft][ODBC Driver Manager] The specified DSN contains a architecture mismatch between the Driver and Application。我使用 Windows 7 64 位,Postgres ODBC 64 位驱动程序版本。 9.00.0200,Postgres 8.4 32 位。
- 我以前从未使用过Dependency Walker。但是我已经从 \system32 和 \SysWOW64 打开了 kernel32.dll 并且 InterlockedIncrement 存在于两者的文件中文件夹。
- 我有一些 TableAdapter,我用它们从 Postgres 中获取数据。这是我在使用WinXP时设置的,现在仍然有效。另一方面,在 VS2005 中的 TableAdapter 属性中,我单击 Data->CommandText 旁边的“...”,它会显示一条消息无法调用 ODBC 驱动程序连接实用程序。
编辑:我在上面添加了第 1-3 点。
【问题讨论】:
-
这完全没有意义。您能否使用 Dependency Viewer 检查 kernel32.dll 中是否存在所谓的缺失导出(在 C:\Windows\system32 和 C:\Windows\SysWOW64 中)。
-
我以前从未使用过Dependency Walker。但是我已经从 \system32 和 \SysWOW64 打开了 kernel32.dll 并且 InterlockedIncrement 都存在于两者的文件中文件夹。
-
您使用的是 32 位版本的 depends.exe - 32 位版本总是加载 c:\system\syswow64 版本的 kernel32.dll,即使您尝试加载 64 - 位一。试试 64 位版本的 depends.exe,你会发现 64 位版本的 kernel32.dll 中缺少这些导出
标签: c# postgresql 64-bit odbc kernel32