Как заставить 32-битное приложение использовать 64-битную COM-библиотеку в CreateObject? - PullRequest
0 голосов
/ 25 июня 2010

Следующий код ведет себя по-разному в зависимости от того, использую ли я 32- или 64-битную версию wscript:

Set oSQLServer = CreateObject("SQLDMO.SQLServer")

For Each o in oSQLServer.ListInstalledInstances
    MsgBox o
Next

В 32-разрядной системе будут перечислены экземпляры моего 32-разрядного сервера (SQL Server 2000), в 64-разрядной - содержимое 64-разрядного сервера (SQL Server 2008). Мне нужно преобразовать этот код в C ++ (32-разрядное приложение). Но мне нужно показать 64-битные серверы. Как заставить созданный объект использовать 64-битные dll и 64-битные ключи в реестре?

Ответы [ 2 ]

5 голосов
/ 25 июня 2010

32-разрядное приложение не может загрузить 64-разрядную DLL, а 64-разрядное приложение не может загрузить 32-разрядную DLL.

0 голосов
/ 25 июня 2010

Я решил использовать ODBC SQLBrowseConnect со строкой соединения

"DRIVER={SQL Server Native Client 10.0};".  

SQLDMO хорошо и действительно мертв, а SQLSMO довольно близоруко только для управляемых приложений.

...