Odpowiednik .NET bibliotek statycznych?
Buduję narzędzie w zarządzanym kodzie (głównie C ++ / CLI) w dwóch wersjach, „normalnej wersji użytkownika” i wersji „pro”.
Fakt, że kod podstawowy jest identyczny między dwiema wersjami, sprawił mi trochę kłopotów, ponieważ chcę spakować powstałe narzędzie jako pojedynczy zespół (DLL) i nie chcę dołączać plików .cpp do wspólnego kod w projektach dwóch wersji narzędzi. Wolałbym mieć projekt wspólnego kodu i projektu dla każdej wersji narzędzia i mieć każdą wersję projektu narzędzi zależną od wspólnego kodu i łączyć go według potrzeb.
W niezarządzanym C ++ zrobiłem to, umieszczając wspólny kod w statycznej bibliotece i łącząc z nim obie wersje narzędzia. Wydaje mi się, że nie mogę tego zrobić w C ++ / CLI. Wydaje się, że jestem zmuszony zbudować wspólny kod w zespole DLL, co skutkuje większą liczbą bibliotek DLL, niż bym chciał.
Podsumowując, nie potrafię ustalić, jak zbudować wspólny kod w jednym projekcie i połączyć go z każdym z końcowych projektów produktu, aby utworzyć dwa pojedyncze zestawy DLL, które zawierają wspólny kod.
Prawdopodobnie robię coś złego, ale próbowałem wypracować, jak to zrobić za pomocą netmodules i cokolwiek, i po prostu nie mogłem go uruchomić. Ostatecznie jedynym sposobem, w jaki to zrobiłem, było powiedzenie linkerowi, aby łączył produkty kompilacji wspólnego zestawu kodu, a nie wyniki, które działają, ale jest to trochę hakerskie IMHO.
W każdym razie, czy ktoś ma jakieś sugestie, jak POWINIENEM rozwiązywać ten problem?
Edytowane: Sądzę, że powinienem był wspomnieć, że wygenerowane zestawy nie są w 100% kodem zarządzanym, zawierają mieszankę kodu zarządzanego i niezarządzanego, co jest prawdopodobnie dość powszechne w przypadku zespołów tworzonych za pomocą C ++ / CLI ...