Question

Je suis en train d'appeler une dll C # de QTP (utilise vbscript). J'ai essayé un certain nombre de choses sans succès:

  • Visual Studio 2010
  • Créer la classe C # libary (st.dll)

code:

using System;
using System.Collections.Generic;
using System.Text;   

namespace st
{
    public class Class1
    {
        public static int GetValue()
        {
            return 34;
        }
    }
}
  • regasm /codebase st.dll
    • ne 'car il est pas un assembly .NET valide'

Dans QTP / vbscript, j'ai essayé

  • extern.Declare micInteger, "GetValue", "e:\st.dll", "GetValue"
    • Retourne le message: 'appel de procédure non valide ou argument'

Quelle que soit la QTP, je serais très reconnaissant de toute idée sur la façon d'appeler la dll c # à partir d'un fichier .vbs.

Était-ce utile?

La solution

Je suis en mesure d'obtenir ce travail en procédant comme suit:

Créer une nouvelle dll C # dans VS 2010.

namespace st4
{
    public class st4_functions
    {
        public int GetValue()
        {
            return 34;
        }
    }
}

Dans QTP J'ai ajouté les lignes suivantes:

Set obj = DotNetFactory.CreateInstance("st4.st4_functions", "c:\\st4.dll")
MsgBox obj.GetValue()

Merci à tous ceux qui ont répondu à mon problème. Bien que je ne faisais pas la solution COM, il m'a fait penser que je pouvais rester avec .NET et a conduit à cette solution. Bon travail tout!

EDIT:

J'ai créé un blog en détail les étapes et fournir des informations supplémentaires:

http: / /www.solutionmaniacs.com/blog/2012/5/29/qtp-calling-c-dll-in-vbscript.html

Autres conseils

Comme dit Marc, mais je pense qu'il mérite une réponse. Si vous vous assurez que votre dll sera disponible si la mécanique COM, votre script doit être en mesure de remettre en avec des choses comme CreateObject .

Comment enregistrer assemblage .NET pour COM Interop

Votre fonction est statique. membres statiques de classe ne peuvent pas être jumelés aux membres d'interface, et si elle ne peut pas implémenter une interface .NET il ne sera certainement pas mettre en œuvre une interface COM.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top