Создаю в VB .NET библиотеку DLL.
- Код: Выделить всё
Public Class erunda
Public Overloads Shared Sub AddNum(ByVal a() As Double, ByVal d() As Double, ByRef c As Double)
Dim ff As Double
ddd_q(d, ff)
c = aaa_q(a) + ff
End Sub
Public Overloads Shared Function aaa_q(ByVal a() As Double) As Double
Dim i As Integer
aaa_q = 0
For i = 1 To a(0)
aaa_q = aaa_q + a(i)
Next i
Return aaa_q
End Function
Public Overloads Shared Sub ddd_q(ByVal d() As Double, ByRef ff As Double)
Dim i As Integer
ff = 0
For i = 1 To d(0)
ff = ff + d(i)
Next i
End Sub
End Class
Проверяю на работоспособность полученную библиотеку в другом проекте на VB .NET. Всё исправно.
Далее хочу ею воспользоваться из макроса VBA.
Регистрирую библиотеку в системе. Пишу к примеру такой код в макросе:
Public Declare PtrSafe Sub AddNum Lib "ClassLibrary1" (ByVal a As Double, ByVal d As Double, ByRef c As Double)
- Код: Выделить всё
Sub test()
Dim a() As Double: ReDim a(2)
Dim d() As Double: ReDim d(2)
Dim c As Double
a(0) = 2: a(0) = 3: a(0) = 4
d(0) = 2: d(0) = 5: d(0) = 6
'Dim my_class As New erunda
Call AddNum(a, d, c)
End Sub
ошибка естесна...
Как я только не пробовал писать. Перебрал практически всё ,что можно было нагуглить.
Результат ошибка "object required", "библиотека не найдена", "точка входа не найдена", ... вовщем ппц.
Помогите разобраться.
Да кстати, система у меня win 7 профешнл 64bit=)
....
Свойства проекта - Приложение - Сведения о сборке - галку на Сделать видимой для COM
Свойства проекта - Компиляция - галку на Регистрация COM-взаимодействия.
и так я тоже пытался делать. Дело в коде вызывающей программы.