Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 CLR сборка - Unable to load DLL  [new]
dmitry stakanov
Member

Откуда:
Сообщений: 241
Ситуация:

есть DLL .net и CLR сборка для нее, DLL .net обращается DLL для которой нельзя создать сборку, тк она не .net (MAPIEx.dll). Соответственно при пробращении к любому методу MAPIEx.dll получаю:

System.DllNotFoundException: Unable to load DLL 'MAPIEx.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
System.DllNotFoundException:
at MAPIEx.NetMAPI.MAPILogin(String strProfile, Boolean bInitAsService)
at MAPIEx.NetMAPI.Login(String strProfile, Boolean bInitAsService)
at MAPIEx.NetMAPI.Login()
at retMessage.StoredProcedures.GetFileContent()

вопрос: есть ли способ как можно подгрузить MAPIEx.dll, чтобы ее увидела моя сбобрка?
1 июн 11, 09:41    [10742987]     Ответить | Цитировать Сообщить модератору
 Re: CLR сборка - Unable to load DLL  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
Это проблема не MSSQL-ного, а чисто дотнетовского характера:
http://msdn.microsoft.com/en-us/library/system.dllnotfoundexception.aspx
The DllNotFoundException is thrown when a dynamic link library defined by the System.Runtime.InteropServices.DllImportAttribute attribute or a comparable language construct, such as the Visual Basic Declare statement, cannot be found. It is not thrown when the common language runtime is unable to load a .NET Framework assembly.

По-русски - CLR не может найти библиотеку, к которой производятся pinvoke-вызовы. Не может именно найти, а не загрузить, выполнить код, и проч. Попробуйте вашу библиотеку положить, например, в system32 - посмотрите, появится ли ошибка опять.
1 июн 11, 11:50    [10744022]     Ответить | Цитировать Сообщить модератору
 Re: CLR сборка - Unable to load DLL  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
Сон Веры Павловны
Попробуйте вашу библиотеку положить, например, в system32

В автоцитате речь о нативной библиотеке, естественно - т.е. о MAPIEx.dll.
1 июн 11, 11:52    [10744040]     Ответить | Цитировать Сообщить модератору
 Re: CLR сборка - Unable to load DLL  [new]
dmitry stakanov
Member

Откуда:
Сообщений: 241
77
Сон Веры Павловны
Сон Веры Павловны
Попробуйте вашу библиотеку положить, например, в system32

В автоцитате речь о нативной библиотеке, естественно - т.е. о MAPIEx.dll.


да, библиотека нативная.

копирование в system32, к сожалению, не помогло.
1 июн 11, 12:26    [10744351]     Ответить | Цитировать Сообщить модератору
 Re: CLR сборка - Unable to load DLL  [new]
dmitry stakanov
Member

Откуда:
Сообщений: 241
помогло копирование вот сюда: C:\Program Files\Microsoft SQL Server\MSSQL10_50.PSAPP01\MSSQL\Binn

но теперь новая проблема))

Сообщение 6522, уровень 16, состояние 1, процедура GetFileContent, строка 0
A .NET Framework error occurred during execution of user-defined routine or aggregate "GetFileContent":
System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
System.BadImageFormatException:
at MAPIEx.NetMAPI.MAPILogin(String strProfile, Boolean bInitAsService)
at MAPIEx.NetMAPI.Login(String strProfile, Boolean bInitAsService)
at MAPIEx.NetMAPI.Login()
at retMessage.StoredProcedures.GetFileContent()
1 июн 11, 12:45    [10744567]     Ответить | Цитировать Сообщить модератору
 Re: CLR сборка - Unable to load DLL  [new]
dmitry stakanov
Member

Откуда:
Сообщений: 241
версия сервера:
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 5.2 <X64> (Build 3790: Service Pack 2)
1 июн 11, 12:47    [10744579]     Ответить | Цитировать Сообщить модератору
 Re: CLR сборка - Unable to load DLL  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
dmitry stakanov,

А dll-ка поди 32-х битная?
1 июн 11, 12:48    [10744597]     Ответить | Цитировать Сообщить модератору
 Re: CLR сборка - Unable to load DLL  [new]
dmitry stakanov
Member

Откуда:
Сообщений: 241
Ray D
dmitry stakanov,

А dll-ка поди 32-х битная?


скорее всего да. а как можно проверить?
1 июн 11, 12:56    [10744676]     Ответить | Цитировать Сообщить модератору
 Re: CLR сборка - Unable to load DLL  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
dmitry stakanov
скорее всего да. а как можно проверить?

Проще всего - открыть dll-ку с помощью ResHacker'а, и посмотреть содержимое манифеста. У x86-dll'ок там будет что-то типа

<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>

разрядность target platform - в атрибуте processorArchitecture
1 июн 11, 16:01    [10746691]     Ответить | Цитировать Сообщить модератору
 Re: CLR сборка - Unable to load DLL  [new]
dmitry stakanov
Member

Откуда:
Сообщений: 241
Сон Веры Павловны,

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.MFC" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>


32-битная. есть какой-нибудь способ, чтобы она завелась на 64-битной операционке?
2 июн 11, 09:42    [10750254]     Ответить | Цитировать Сообщить модератору
 Re: CLR сборка - Unable to load DLL  [new]
sbalashov
Member

Откуда:
Сообщений: 6
dmitry stakanov,

Попробуй собрать CLR сборку на платформе не Any CPU, а x86.
2 июн 11, 12:11    [10751446]     Ответить | Цитировать Сообщить модератору
 Re: CLR сборка - Unable to load DLL  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6530
dmitry stakanov
32-битная. есть какой-нибудь способ, чтобы она завелась на 64-битной операционке?
Нет
2 июн 11, 12:41    [10751737]     Ответить | Цитировать Сообщить модератору
 Re: CLR сборка - Unable to load DLL  [new]
dmitry stakanov
Member

Откуда:
Сообщений: 241
sbalashov
dmitry stakanov,

Попробуй собрать CLR сборку на платформе не Any CPU, а x86.


Спасибо! Завелось!
3 июн 11, 18:04    [10761089]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить