CLR i assembly 64b

0

Cześć, chyba w dobrym forum piszę, ponieważ problem dotyczy bardziej MSSQL niż C#. Więc sytuacja jest taka. Utworzyłem sobie dll w C#, która ma działać jako assembly w MSSQL. Biblioteka korzysta z dwóch innych dllek, które są 32b. I na MSSQL 32b wszystko pięknie działa, natomiast w MSSQL 64b przy wywołaniu procedury, która korzysta z tamtych zewnętrznych dllek, pojawia się błąd:

Msg 6522, Level 16, State 1, Procedure nazwa_procedury, Line 0
A .NET Framework error occurred during execution of user-defined routine or aggregate "nazwa_procedury".

Czy jest możliwe, żeby to zrobić bez przerabiania tamtych zewnętrznych dllek na 64b? Assembly jest skompilowane z dyrektywą AnyCPU, ale z innymi też próbowałem.

1

Jeśli DLL-ka używa natywnych bibliotek, to nie może być AnyCPU.
AnyCPU oznacza "uruchom na dowolnej platformie", co w praktyce oznacza x86 na x86, a x64 na x64.
Jeśli assembly zostanie uruchomione przez 64-bitowy framework, to nie załadujesz 32-bitowej biblioteki.

Ponieważ w ramach jednego procesu nie można mieszać kodu 32- i 64-bitowego, wszystko (razem z wersją MSSQL, .NETa i natywnymi dllkami) musi być albo 32- albo 64-bitowe.

Jest natomiast możliwe aby proces 32-bitowy komunikował się z procesem 64-bitowym np. za pomocą named pipe, ale to nie będzie raczej dobrym rozwiązaniem w tym przypadku.

Dlatego

Czy jest możliwe, żeby to zrobić bez przerabiania tamtych zewnętrznych dllek na 64b?
Nie.

0

OK, dzięki za odpowiedź.

1 użytkowników online, w tym zalogowanych: 0, gości: 1