在C#中使用64位SPSS库

我正在尝试以编程方式创建一个
.sav
文件而无需使用SPSS自动化(SPSS.BackendAPI库)以释放更多SPSS许可证。我发现CodePlex上的这个库使用32位I / O模块而不需要许可证,这很好。 问题是我需要将应用程序构建为x64,以便在我自己的应用程序中访问额外的可寻址内存。因此,我也需要使用64位库。有没有人在托管代码中使用64位库有好运?     
已邀请:
您可以使用CodePlex中的该库,但您必须稍微修改它才能使用I / O模块附带的spssio64.dll。在
SpssThinWrapper.cs
文件中,您需要更改正在导入的DLL。您还必须更改一些入口点。要获取64位DLL中的入口点的名称,您需要运行
dumpbin /exports spssio64.dll
。如果你这样做,你会看到64位和32位入口点基本相同,除了一些32位的入口点有@符号和后面的数字,而64-没有比特入口点。在DllImport属性中更改所有这些以及DLL。例如:
[DllImport("spssio32.dll", EntryPoint="spssCloseAppend@4", CharSet=CharSet.Ansi, SetLastError=true, ExactSpelling=true)]
public static extern ReturnCode spssCloseAppend(int handle);
[DllImport("spssio64.dll", EntryPoint = "spssCloseAppend", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
public static extern ReturnCode spssCloseAppend(int handle);
等等。 执行此操作后,您将需要确保使用正确的DLL。将spssio64.dll,icudt32.dll,icuin32.dll和icuuc32.dll从I / O模块的win64文件夹复制到CodePlex的SPSS .NET库的Resources文件夹中。这将覆盖现有的32位dll,所以如果你需要32位和64位,你必须做一些不同的事情,但听起来你只需要64位,所以这应该有效。 作为使用此库创建一个
.sav
是多么容易的一个例子:
using (SpssDataDocument spssDoc = SpssDataDocument.Create("test.sav")) { 
    SpssVariable v = new SpssNumericVariable(); 
    v.Name = "gender"; 
    v.Label = "What is your gender?"; 
    v.ValueLabels.Add(1, "Male"); 
    v.ValueLabels.Add(2, "Female"); 
    doc.Variables.Add(v); 
    doc.CommitDictionary();
    SpssCase c = doc.Cases.New();
    c["gender"] = 1;
    c.Commit();
}
该库为您处理所有spss *调用,并确保它们处于正确的顺序和所有内容。     
为什么不通过SPSS社区网站(www.ibm.com/developerworks/spssdevcentral)使用SPSS Statistics i / o dll?它是免费的,适用于所有支持的SPSS平台的32位和64位版本。它不需要SPSS许可证。     

要回复问题请先登录注册