赞
踩
我已经在Linux上构建了一个dotnet 4.6应用程序,该应用程序使用ODBC连接到DB2。 我遇到了一个看起来像这样的错误:
ODBC ERROR : Arithmetic operation resulted in an overflow.
ODBC ERROR STACK: at System.Data.Odbc.OdbcDataReader.FirstResult()
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior ..
我认为这是因为我有一个32位DLL试图使用64位驱动程序/ odbc-manager。 我已经成功安装了unixODBC和DB2驱动程序,并确认它们都是64位的。
file /usr/lib/x86_64-linux-gnu/libodbc.so.2.0.0
/usr/lib/x86_64-linux-gnu/libodbc.so.2.0.0: ELF 64-bit LSB shared object, x86-64, version 1
(SYSV), dynamically linked, BuildID[sha1]=389cfd357f04f6e9265c8015c50935b04c09c468,
stripped
file /odbc/odbc_cli/clidriver/lib/libdb2.so.1
/odbc/odbc_cli/clidriver/lib/libdb2.so.1: ELF 64-bit LSB shared object, x86-64, version 1
(SYSV), dynamically linked, not stripped
我已经将我的项目构建为linux 64,如下所示:
dotnet publish ${PROJFILE} /p:Platform=x64 -c Release -r linux-x64 -o /app/publish
而且我可以看到PE32 +的主DLL确实是64位的(只是PE32仅意味着32位)
file la3-core-service-proc.dll
la3-core-service-proc.dll: PE32+ executable (console) x86-64 Mono/.Net assembly, for MS
Windows
大多数所有的dotnet程序集也是PE32 +,但是System.Data.Odbc.dll不是。 它是32位的。
file System.Data.Odbc.dll
System.Data.Odbc.dll: PE32 executable (DLL) (console) Intel 80386 Mono/.Net assembly, for
MS Windows
所以我的问题是..如何添加64位(PE32 +)System.Data.Odbc.dll,或者在哪里可以找到它?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。