Как создать CCW из dll зависимость
Я создаю один компонент CCW для библиотеки классов C#, эта библиотека содержит некоторые сторонние библиотеки DLL.
Этот пользовательский элемент управления должен использовать на странице Classic Asp
Для этого сгенерировал класс CCW Wrapper
В классе Wrapper создайте интерфейс для объявления функции.
этот интерфейс и класс содержат ссылку на библиотеку библиотеки классов C# и сторонние библиотеки 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, а также C# Class Library в GAC
1 ответ
Попробуйте regsvr32.exe CCWTEST.ClassMath.ocx (ваш файл компонента COM .ocx) вместо gacutil для регистрации вашего компонента COM.