0

こんにちは、以下のコードで ac# dll を作成しています

システムを使用する;
System.Collections.Generic の使用;
System.Text を使用します。
System.Diagnostics を使用します。
System.IO の使用;
System.Runtime.InteropServices を使用します。

名前空間のイメージ エクスポート
{
    [ComVisible(真)]
    パブリック クラス ExportImage
    {
        [ComVisible(真)]
        public void exportPNG(String pDirectory,String svgFileName,String outputFileName) {
            文字列引数= pDirectory+"res\\include\\highcharts-convert.js -infile "+pDirectory+"res\\graphs\\"+svgFileName+" -outfile "+pDirectory+"res\\graphs\\"+outputFileName +" -スケール 2.5 -幅 1088";
            /*using (StreamWriter writer = new StreamWriter("c:\\debug.txt", true))
            {
                writer.WriteLine("pDirectory=" +pDirectory);
                writer.WriteLine("引数="+引数);
            }*/
            プロセス p = new Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = false;
            p.StartInfo.FileName = pDirectory+"res\\bin\\phantomjs.exe";
            p.StartInfo.Arguments = 引数;
            p.Start();
            p.WaitForExit();
        }
    }
}

DLLを作成するために、VS2005で以下のように構成します

応用
     アセンブリ名 -> imageexport
      デフォルトの名前空間 - > imageexport
     outputtype => クラスライブラリ
     起動オブジェクト ->(未設定)
   アセンブリ情報:
         a) アセンブリ バージョン ->1 0 0 0
         b) ファイル バージョン ->1 0 0 0
         c) アセンブリ Com を表示する -> チェック済み
建てる
  構成 -> アクティブ (デバッグ)
  プラットフォーム -> アクティブ (任意の CPU)
  全般的 :
    a) 条件付きコンパイル シンボル -> 空白
     b) デバッグ定数を定義 -> チェックあり
    c) トレース定数を定義 -> チェック済み
    d) プラットフォーム ターゲット -> 任意の CPU
    e) 安全でないコードを許可する -> チェックしない
    f) コードの最適化 -> チェックなし
    g) 警告レベル -> 4
    h) スーパーレス警告 -> 空白
    i) 警告エラーの処理 -> なし

この後、imageexport.dllを.net 2.0のregasmに登録します

レジストリを見ると、HKEY_CLASSES_ROOT の下に imageexport.ExportImage が見つかりました。

以下の vbscript では、オブジェクトを作成して関数を呼び出すために使用されます

暗いオブジェクト                        
obj = CreateObject("imageexport.ExportImage") を設定します。
obj.exportPNG rvPAWZDirectoryPath&"\","SVGData_"&Session("export_time")&".svg","Export_" & export_time & ".png"

しかし、これにより、VBSCript の createObject 行で「UnknownException」という名前の例外が発生します。どこが問題なのか教えてください

4

1 に答える 1

8

Dllを次のように登録する必要があると思います:

 C:\Windows\Microsoft.NET\Framework64\v4.0.30319>regasm yourDllPath /codebase

これで、DLL のオブジェクトを作成できます。

于 2015-08-14T07:43:38.890 に答える