c# winform 里面调用dll(System.Data.SQLite.DLL)的问题
System.Data.SQLite.DLL这个组件分32位和64位的版本。我弄的软件要确保在32位和64位下能够运行,是否要将项目复制两份,调用不同的dll,分别生成3...
System.Data.SQLite.DLL这个组件分32位和64位的版本。我弄的软件要确保在32位和64位下能够运行,是否要将项目复制两份,调用不同的dll,分别生成32位和64位的版本?感觉很繁琐,有没有别的方法?
展开
3个回答
展开全部
不需要啦, 你只要判断当前是32还是64位,就可以了。
if(Detect32or64()=="32")
{
// do 32bit things.
}
else if(Detect32or64()=="64")
{
//do 64bit things
}
/////////////////////////////判断方法(受操作系统和CPU双重影响)
public static string Detect32or64()
{
ConnectionOptions oConn = new ConnectionOptions();
System.Management.ManagementScope oMs = new System.Management.ManagementScope("\\\\localhost", oConn);
System.Management.ObjectQuery oQuery = new System.Management.ObjectQuery("select AddressWidth from Win32_Processor");
ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oMs, oQuery);
ManagementObjectCollection oReturnCollection = oSearcher.Get();
string addressWidth = null;
foreach (ManagementObject oReturn in oReturnCollection)
{
addressWidth = oReturn["AddressWidth"].ToString();
}
return addressWidth;
}
if(Detect32or64()=="32")
{
// do 32bit things.
}
else if(Detect32or64()=="64")
{
//do 64bit things
}
/////////////////////////////判断方法(受操作系统和CPU双重影响)
public static string Detect32or64()
{
ConnectionOptions oConn = new ConnectionOptions();
System.Management.ManagementScope oMs = new System.Management.ManagementScope("\\\\localhost", oConn);
System.Management.ObjectQuery oQuery = new System.Management.ObjectQuery("select AddressWidth from Win32_Processor");
ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oMs, oQuery);
ManagementObjectCollection oReturnCollection = oSearcher.Get();
string addressWidth = null;
foreach (ManagementObject oReturn in oReturnCollection)
{
addressWidth = oReturn["AddressWidth"].ToString();
}
return addressWidth;
}
展开全部
和System.Data.SQLite.DLL关系不大,你将SQLLite安装目录的amd64,x86目录都复制到bin目录下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根本不需要复制两个,这个微软处理的很好的,我觉得用个32的就可以了,运行在64位的系统上面是没有问题的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询