2008-10-23 13 views
17

Pracuję nad nową konfiguracją rozwiązania dla naszego dużego projektu VC++ z wykorzystaniem VS 2008. Chciałbym, aby ta konfiguracja wykorzystała flagę kompilacji wielordzeniowej /MP.Strategie dla wielordzeniowych kompilacji (/ MP), które używają #import

Jednak funkcja "#import" generowania klas COM jest rozpylana w całej bazie kodu, a ta funkcja nie jest obsługiwana podczas używania/MP.

Rozumiem, dlaczego #import nie będzie działał, Chcę wiedzieć, czy ktokolwiek napotkał ten problem i jak się nad nim pracuje?

robie co następuje:

  • nie użyć flagi/MP na projektach, które są małe lub poza pomoc. (może wrócę do nich później)
  • Usunięto #import i zastąpiłem go bardziej standardowym nagłówkiem generowanym przez MIDL (#include). Jest to tylko opcja w kilku miejscach, które można łatwo przekształcić w old school COM.
  • Utwórz nowy projekt, który #importuje pozostałe biblioteki. Najpierw stwórz ten build. #Uwzględnij pliki .tlh, które tworzy we wszystkich miejscach, które # zostały wcześniej zaimportowane.

Jestem ciekawy, czy ktoś ma jakieś inne sugestie? Również w ostatnim punkcie ostatni punkt (tworzenie nowego projektu i używanie tylko #import) - jeśli zrobiłeś coś takiego, jak to zrobiłeś? Jaki typ projektu, jak wyglądało "źródło", skąd pliki wyjściowe? Jak je uwzględnić? (wiesz, zrób wszystko, co dla mnie!)

+0

Twoja ostatnia opcja wydaje się być najlepszym sposobem na zrobienie tego, jeśli chcesz tworzyć kompilacje wielordzeniowe - jest spójna i nie marnuje się. Sorr, że nie mogę pomóc w szczegółach na ten temat, – Tim

+0

Dzięki za komentarz. Okazuje się, że potrzebuję kilku etapów generowania Tlh na różnych etapach budowy (prawie beznadziejna bitwa). Zatrzymałem to - moja obecna walka to odejście od VSS. – Aardvark

+2

Oto twoja odpowiedź http://stackoverflow.com/questions/650578/replacement-for-import-in-visual-c –

Odpowiedz

6

Mam projekt z dwoma plikami źródłowymi, które # importują ten sam plik. Podczas kompilacji przy użyciu/MP od czasu do czasu pojawiał się błąd odmowy dostępu, ponieważ oba pliki źródłowe próbowały utworzyć plik .tlb w tym samym czasie. Poprawię to, włączając wstępnie skompilowane nagłówki i dodająC#import do wstępnie skompilowanego pliku źródłowego nagłówka.

+0

To zadziałało dla mnie. Nie jestem pewien, czy są jakieś wady, ale na razie jestem szczęśliwy. Dzięki. – criddell

6

Można użyć opcji/MP dla projektu jako całości, a następnie uczynić wyjątek dla jednego pliku przy użyciu /MP1 opcję .

+1

Byłbym miły, ale to nie działa. – sorin

Powiązane problemy