Как создать CCW из зависимости от dll

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

  1. Этот пользовательский элемент управления должен использоваться на странице Classic Asp.

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

  3. В классе Wrapper создайте интерфейс для объявления функции.

этот интерфейс и класс содержат ссылку на библиотеку 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-скрипта возникает ошибка "Undefined". Я не знаю, что с этим будет не так. для этого необходимо установить стороннюю DLL, а также библиотеку классов С# в GAC.


person Community    schedule 29.05.2013    source источник


Ответы (1)


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

person xisco rossello    schedule 04.06.2013