4

.savより多くの SPSS ライセンスを解放するために、SPSS 自動化 (SPSS.BackendAPI ライブラリ) を使用せずにプログラムでファイルを作成しようとしています。CodePlex で、ライセンスを必要とせずに 32 ビット I/O モジュールを使用するこのライブラリを見つけました。

問題は、自分のアプリケーションで追加のアドレス指定可能なメモリにアクセスするために、アプリケーションを x64 としてビルドする必要があることです。したがって、64 ビット ライブラリも使用する必要があります。マネージ コードで 64 ビット ライブラリを使用して運が良かった人はいますか?

4

2 に答える 2

6

そのライブラリは 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* 呼び出しを処理し、それらが正しい順序で行われていることを確認します。

于 2011-04-08T18:25:45.283 に答える
3

SPSS Community サイト (www.ibm.com/developerworks/spssdevcentral) から入手できる SPSS Statistics i/o dll を使用しないのはなぜですか? これは無料で、サポートされているすべての SPSS プラットフォーム用の 32 ビット バージョンと 64 ビット バージョンがあります。SPSS ライセンスは必要ありません。

于 2011-04-11T01:51:18.440 に答える