我的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下运行。
更新了有关该问题的信息(来自我对评论的回复,但不仅仅是):
编辑:我在上面添加了第1-3点。
答案 0 :(得分:5)
我刚刚遇到了完全相同的问题,并找到了一个非常简单的解决方案: 在导入中使用System.Data.Odbc而不是Microsoft.Data.Odbc。
答案 1 :(得分:4)
在64位窗口上,这些不是从kernel32.dll导出的实际函数 - 它们是编译器内在函数。 P /调用该函数的代码应该使用Interlocked托管类。
现在它们也是32位窗口的内在函数,但出于app appat原因,导出的函数仍然可以在32位窗口上从kernel32.dll获得。 64位不是问题,因为没有应用程序兼容。
答案 2 :(得分:1)
我的猜测是你的司机出了问题。我不能确定,但您可能想考虑使用其他东西。 Npgsql看起来相当不错,它是100%C#代码,所以它应该可以在32位Windows XP上运行而没有任何问题。
答案 3 :(得分:1)
我想我已经解决了问题,虽然我不确定。但是,我安装了32位版本的Postgres ODBC驱动程序和我使用了32位版本的ODBC管理员 C:\ Windows \ SysWOW64 \ odbcad32.exe 来配置连接。我在线程64-bit-odbc-exception中找到了有关32位ODBC管理员的信息,其中一个用户引用了MSDN: Managing Data Sources。
我认为我需要与我的操作系统相同版本的ODBC驱动程序(重新分配位数)。我也尝试过64位版本的Postgres和ODBC驱动程序,但它也不想为我工作。唯一的解决方案是32位版本的Postgres和ODBC,以及 32位ODBC管理员中的连接集。
关于我的VS项目,我将 Project-> Properties-> Build-> Platform target 设置为 x86 。
希望它能在将来帮助某人。