2013-05-29 3 views
2

Я создаю один компонент CCW для библиотеки классов C#, эта библиотека содержит некоторые сторонние библиотеки DLL.Как создать CCW из зависимости dll

  1. Этот контроль пользователь должен использовать в классический ASP странице

  2. Для этой цели сгенерировал CCW Wrapper класса

  3. В классе Упаковочный создать интерфейс для объявления функции.

этот интерфейс и класс содержит ссылки на библиотеки классов C# DLL и Стороннее DLL

Интерфейс

[ComVisible(true)] 
    [Guid("D6F88E95-8A27-4ae6-B6DE-0542A0FC7039")]//GUID for this interface 
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]//Enable early as well as late binding 
    public interface IInterface 
    { 
     [DispId(1)] 
     void Init(); 

     [DispId(2)] 
     void OpenFile(string FileName); 

     [DispId(3)] 
     void Dispose(); 

     [DispId(4)] 
     THirdPartyDLLClass ThirdPartyMethod(); 
    } 

Интерфейс Реализован класс

[ComVisible(true)] 
    [Guid("13FE32AD-4BF8-495f-AB4D-6C61BD463EA4")]//GUID for this class 
    [ClassInterface(ClassInterfaceType.None)]//Don't generate any interface automatically. We will explicitly create one 
    [ComSourceInterfaces(typeof(IInterface))]//Expose events 
    [ProgId("CCWTEST.ClassMath")]//Friendly name of the class. Used while creating object without using 'New' keyword 
    public class ClassMath : IInterface 
    { 
     [ComVisible(false)]//Don't expose to COM. Can be used internally. 
     private ViewerControl objViewerControl = new ViewerControl(); //ref dll class file 

     [ComVisible(true)] 
     public void Init() 
     { 
     objViewerControl.Init(); 
     } 

     [ComVisible(true)] 
     public void OpenFile(string FileName) 
     { 
      objViewerControl.OpenFile(FileName); 
     } 

     [ComVisible(true)] 
     public void Dispose() 
     { 
      objViewerControl.Dispose(); 
     } 

     [ComVisible(true)]// 
     public THirdPartyDLLClass ThirdPartyMethod() 
     { 
      return THirdPartyDLLClass.ThirdPartyClassProperty; 
      } 
     } 

JavaScript в классическом ASP

window.onload = onLoad; 
     function onLoad() 
     { 
      try 
      {     
       var obj = new ActiveXObject("CCWTEST.ClassMath");   

      } 
      catch (e) 
      { 
       alert(e.Message); 
      } 
     } 

, а после регистрации этого DLL для gacutil/I и пытается получить доступ к этим DLL в мой код Java Script дает мне "Не определено" ошибка. Я не знаю, что с этим случилось. для этого нужно установить DLL стороннего, а также библиотеки классов C# в GAC

ответ

0

попробовать regsvr32.exe CCWTEST.ClassMath.ocx (ваш COM .ocx компонент файла) вместо gacutil для зарегистрировать COM-компонент.