vbscript での C# DLL の呼び出し
質問
QTP から C# dll を呼び出そうとしています (vbscript を使用します)。いくつかのことを試しましたが成功しませんでした。
- Visual Studio 2010
- C# クラス ライブラリ (st.dll) を作成する
コード:
using System;
using System.Collections.Generic;
using System.Text;
namespace st
{
public class Class1
{
public static int GetValue()
{
return 34;
}
}
}
regasm /codebase st.dll
- 「有効な .NET アセンブリではないため」失敗します
QTP/vbscriptで、私は試してみました
extern.Declare micInteger, "GetValue", "e:\st.dll", "GetValue"
- 返されるメッセージ:「無効なプロシージャ呼び出しまたは引数」
QTP に関係なく、.vbs ファイルから C# DLL を呼び出す方法についての洞察をいただければ幸いです。
解決
次のようにすることでこれを機能させることができました。
VS 2010 で新しい C# DLL を作成します。
namespace st4
{
public class st4_functions
{
public int GetValue()
{
return 34;
}
}
}
QTP に次の行を追加しました。
Set obj = DotNetFactory.CreateInstance("st4.st4_functions", "c:\\st4.dll")
MsgBox obj.GetValue()
私の問題に答えてくれた皆さんに感謝します。私は COM ソリューションを使用しませんでしたが、.NET を使い続けることができると考え、このソリューションに至りました。皆さん、頑張ってください!
編集:
手順の詳細と追加情報を提供するブログ投稿を作成しました。
http://www.solutionmaniacs.com/blog/2012/5/29/qtp-calling-c-dll-in-vbscript.html
他のヒント
マークとして言ったが、私はそれメリット答えだと思います。あなたのDLLがCOM力学しかし利用できるようになりますことを確認する場合は、あなたのスクリプトは、のCreateObjectのの
のようなものでそれを呼び出すことができるはずです<のhref = "http://blogs.msdn.com/jigarme/archive/2008/04/28/how-to-register-net-assembly-for-com-interop.aspx" のrel = "nofollowをnoreferrer ">どのようにCOM相互運用する
のための.NETアセンブリを登録しますあなたの関数は静的です。静的クラスメンバーは、メンバーのインタフェースにまで一致させることができない、そしてそれは、その後、.NETインターフェイスを実装することができないならば、それは確かにCOMインターフェイスを実装していません。