VB6 dll с именем SimpleBO с модулем (.bas) и Sub Main
имеет следующий код
Public gsConnectionString As String
Sub Main()
Dim constr As String
constr = getConStr() 'get it from a file
gsConnectionString = constr
LogToFile "At main after getting constr showing gsConnectionString " & gsConnectionString 'logToFile simply writes a line in a file
....
Exit Sub
... Error handler
Exit sub
Модуль также имеет метод publi c:
Public Function GetConnectionEnterprise() As String
GetConnectionEnterprise = gsConnectionString
Exit Function
В dll есть класс SystemBO
с различными методами, включая:
Public Function Connection() As String
Connection = GetConnectionEnterprise
Exit Function
Затем у VB6 exe также есть модуль с Sub Main
при запуске.
Он ссылается на dll и имеет это код во вспомогательной основной части:
Public gsConnectionString as String
Sub Main()
Dim oBO As SimpleBO.SystemBO
Set oBO = New SimpleBO.SystemBO
gsConnectionString = oBO.Connection
LogToFile "InTestBOSimple:ModStartUpForTestBOSimple:Main gsConnectionString " & gsConnectionString
frmTestBO1.Show
Set oBO = Nothing
Exit Sub
VB6 добавляется как компонент COM +.
Первый тест на компьютере Windows 10 - запуск exe.
Файл журнала показывает:
SimpleBO:modStartUp:Main At main after getting constr showing gsConnectionString Provider=sqlOLEDB;Data ...
Затем
InTestBOSimple:ModStartUpForTestBOSimple:Main gsConnectionString Provider=sqlOLEDB;Data Source
Ожидаемые результаты. Вызывается Sub Main
dll.
Затем установите dll и exe на Windows Server 2012, работающий на виртуальной машине.
DLL устанавливается в Com + с той же настройкой.
Затем при запуске exe (который работает без ошибок) файл журнала не показывает, что был вызван Sub Main
dll, а только показывает:
InTestBOSimple:ModStartUpForTestBOSimple:Main gsConnectionString (blank)
Значение вызова to oBO.Connection
, что не привело к ошибке, ничего не вернуло, что также показывает, что Sub Main
dll не был вызван.
Я пробовал разные вещи - переустановил com + с нуля на сервере, но тот же проблемы.
Я попытался добавить код в exe, который имеет форму, и при нажатии кнопки появляется
Private Sub cmdGetCN_Click()
Dim oBO As SimpleBO.SystemBO
Dim cn As String
Set oBO = New SimpleBO.SystemBO
cn = oBO.Connection
lblMessage.Caption = "cn = " & cn
Exit Sub
сообщение показывает CN =
(и пустое поле после него).
Были ли у кого-нибудь проблемы такого типа?
Спасибо