Wywołanie dll w aplikacji framework 4.8

0

Witam.
Mam aplikację napisaną w C# pod framerworkiem 4.0. Podniosłem jej wersję do framowerka 4.8.
I mam taki problem. Zewnętrzna dll'ka którą ładuję aby wywołać z niej pewne procedury w starej wersji działa prawidłowo, natomiast pod nowym frameworkiem podczas wywołania pierwszej metody z niej dostaję wyjątek:
„Próbowano załadować program w niepoprawnym formacie. (Wyjątek od HRESULT: 0x8007000B)”
Plik ani projekt nie zmieniły się (w projekcie został tylko podniesiony framework).

Poniżej deklaracja dll'ki:

[System.Runtime.InteropServices.DllImport("MFDLL.dll", EntryPoint = "initconnect",
                   CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall,
                   CharSet = System.Runtime.InteropServices.CharSet.Ansi)]
        public static extern short iWintecInitconnect(StringBuilder path);

Wywołanie metody:

ProgrammerIWintec prms = (ProgrammerIWintec)Programmer;
StringBuilder sp = new StringBuilder(prms.SoftwareDirectory);
result = iWintecInitconnect(sp);

Czy coś zmieniło się pomiędzy frameworkami w wywołaniu zewnętrznych dll'ek?
Dll'ka jest ta sama, kod ten sam, tylko framework inny. Mam w konfigu aplikacji włączoną zgodność z frameworkiem 4.0.
Czy ktoś mógłby mi pomóc?

1

Spróbuj ze zmianą Platform target i zmiast Any CPU ustaw na x86 i sprawdź czy zadziała.

0
AdamWox napisał(a):

Spróbuj ze zmianą Platform target i zmiast Any CPU ustaw na x86 i sprawdź czy zadziała.

Ponieważ ten projekt jest biblioteką większego projektu, to zmiana na x86 nie jest możliwa. Pozostałe projekty są w trybie AnyCPU.

1

Moim zdaniem inaczej tego nie ogarniesz. Nie jestem pewny, ale chyba możesz jeden projekt zrobić stricte x86, a resztę Any CPU. Wpisując błąd w Google pokazują się wyniki, w których trzeba manewrować pomiędzy x86, a x64, więc albo wracaj do 4.0, albo zmień tak jak mówie.

PS.
Jaki jest powód przejścia na 4.8?

0
AdamWox napisał(a):

Moim zdaniem inaczej tego nie ogarniesz. Nie jestem pewny, ale chyba możesz jeden projekt zrobić stricte x86, a resztę Any CPU. Wpisując błąd w Google pokazują się wyniki, w których trzeba manewrować pomiędzy x86, a x64, więc albo wracaj do 4.0, albo zmień tak jak mówie.

PS.
Jaki jest powód przejścia na 4.8?

Miałeś rację.
Zmieniłem cel platformy na głównym projekcie na x86 i dll'ka zaczytała się. Widocznie jest 32-bitowa.
Dzięki za pomoc.

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