J'utilise la bibliothèque JACOB (Java COM Bridge) pour appeler des objets COM enregistrés depuis mon système d'exploitation Windows. Il m'a fallu du temps avant de comprendre comment fonctionne JACOB et de tout mettre en place. Donc, mon problème actuel est que:Qu'est-ce qu'une structure COM valide pour la bibliothèque JACOB?
ActiveXComponent comp = new ActiveXComponent("iTunes.Application");
par exemple fonctionne, mon iTunes démarre correctement, etc. Si je veux appeler un auto généré et enregistré objet COM écrit en C# JACOB répond en l'erreur suivante:
Exception in thread "main" com.jacob.com.ComFailException: Can't co-create object
que mon iTunes a commencé était un indicateur pour moi que tout est mis en place à droite, je ne sais pas pourquoi JACOB ne peut pas appeler mon propre .dll
Actuellement, je suis en utilisant Visual studio 2015 Surchauffe registre pour COM interop fonction qui a travaillé p Retty bien dans le passé pour moi. L'objet COM se présente comme suit:
[Guid("EAA4976A-45C3-4BC5-BC0B-E474F4C3C83F")]
public interface ComClass1Interface
{
}
[Guid("7BD20046-DF8C-44A6-8F6B-687FAA26FA71"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface ComClass1Events
{
}
[ComVisible(true)]
[Guid("0D53A3E8-E51A-49C7-944E-E72A2064F938"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(ComClass1Events))]
[ProgId("test.Application")]
public class ComClass1 : ComClass1Interface
{
}
quelque chose de mal avec mon dll C# ou ne JACOB besoin d'un certain type de structure dans cette dll?
Malheureusement, je n'ai trouvé aucun exemple COM pour JACOB.
Merci d'avance.
EDIT:
Si je change ma première ligne à:
ActiveXComponent comp = new ActiveXComponent("CLSID:{C9888A8E-8D23-4185-9D7D-A1E0B812803D}");
Je reçois suivante Exception:
Exception in thread "main" com.jacob.com.ComFailException: Can't find moniker
Mon .dll doit être enregistré si.