2015-07-24 3 views
0

я создал класс и сделал ком видимое:Невозможно зарегистрировать DLL в качестве COM-компонента, модуль был загружен, но точка входа DllRegisterServer не был найден

[ComVisible(true)] 
    [Guid("FD909333-3CD0-477F-8A7E-B8045B0B84EC")] 
    [ClassInterface(ClassInterfaceType.None)] 
    [ProgId("TestComApp.TestApp.TestClass")] 
    public class TestClass:ITestCom 
    { 
     public int Add(int a, int b) { return a + b; } 
    } 

Также интерфейс установлен быть COM видимым:

[ComVisible(true)] 
    [Guid("26567B41-15DB-4EE2-A277-357EAE96BF6A")] 
    [InterfaceType(ComInterfaceType.InterfaceIsDual)] 
    interface ITestCom 
    { 
     int Add(int a, int b); 
    } 

Но когда я пытаюсь зарегистрировать DLL

regsvr32 /i TestComApp.dll 

я получаю ВОЛП Ошибка мычание «Модуль был загружен, но точка входа DllRegisterServer не был найден»

enter image description here

ответ

0

Чтобы зарегистрировать .NET DLL, необходимо использовать Regasm.exe вместо regsvr32.exe. Regasm.exe находится в C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 (или аналогично в зависимости от версии .NET).

Также не забудьте указать параметр/codebase или сделать сборку сильно именованной, иначе COM не сможет найти DLL.