-
1. Data: 2012-04-02 19:20:26
Temat: windows, mfc, dllka z klasą okna
Od: Kicer <...@...c>
Witam
mam duzy projekt (a właściwie solucję z setkami projektów) napisany z
użyciem mfc.
W tym projekcie znajdowała się pewna klasa dziedzicząca po CWnd.
Z pewnych względów, musiała zostać przesunięta do dllki (dynamic library,
use MFC in a shared DLL).
Tu zaczęły się problemy:
1. problemy z resourcami - pomogło użycie
AFX_MANAGE_STATE(AfxGetStaticModuleState());
W pierwszej chwili wyglądało, że już jest ok, ale jednak nie:
2. pewne komunikaty nie dochdzą, czy też nie wychodzą z okienka:
a. okienko w ogóle nie dostaje komunikatów klawiatury (z myszy tak)
b. przyciski osadzone w oknie przestały reagować (nie wykonują się funkcje z
nimi "powiązane".
Oczywiscie przed przenosinami do dllki było ok.
Najwyraźniej coś z mesydżami.
Lokalny spec od mfc poradzil, aby projekt z klasą utworzyć jako dll/mfc
extension.
Stworzylem pusty projekt, aby zobaczyc czym się różni zwykła dllka od
extension.
Wychodzi na to, ze jest to tylko kwestia, by zamiast makra _USRDLL uzyć
_AFXEXT.
Przeniosłem też "dllmain.cpp" z szablonowego projektu do mojego.
problemem jest:
1>dllmain.obj : error LNK2005: _DllMain@12 already defined in
mfcs90d.lib(dllmodul.obj)
Problem łatwy do wygoogla, jednak wszystkie porady można o kant dupy
rozbić;) nic nie skutkuje.
Projekt z moja dllką, poza wspomnianą klasą, zawiera dziesiątki innych
plików i dolinkowuje sporo innych bibliotek.
Co jeszcze może być przyczyna? (poza tym co standarowo radzi support
microsoftu).
Odnoszę wrażenie, że jest to kwestia jakiegoś drobnego detalu, który mi
umyka.
Porównywałem vcproja mojego projektu, z szablonowym. Są w zasadzie
identyczne (różna w katalogach include i dla linkera + dodatkowe
biblioteki).
Oczywiscie szablonowy projekt się kompiluje, nawet jeśli zaczynam w nim
kopać, próbując popsuć tak, by wywalał ten sam błąd, który jest u mnie.
pozdrawiam
--
Michał Walenciak
gmail.com kicer86
http://kicer.sileman.net.pl
gg: 3729519
-
2. Data: 2012-04-05 21:03:44
Temat: Re: windows, mfc, dllka z klasą okna
Od: Kicer <...@...c>
problemem okazało się to, że w jednym miejscu korzystałem z
AFX_MANAGE_STATE.
Po wywaleniu użycia tego makra, problem z linkowaniem znikął.
--
Michał Walenciak
gmail.com kicer86
http://kicer.sileman.net.pl
gg: 3729519