Mam projekt w c++ 2010 express który składa się z programu i biblioteki z obsługą /clr czyli w c++/cli.
Klasy w bibliotece są typu exportowego czyli public ref class jakasklasa. Do tej pory w trybie Debug wszystko było fajnie program i biblioteka kompilowały się. Jak przełączyłem w tryb Relase biblioteka się skompilowała ale nie został utworzony plik .lib i oczywiście .exe. Z opisów w sieci wynika że ma być ustawiony parametr Linker->Advanced->Import Library. Oczywiście mam go ustawionego w obu trybach. Po kilku godzinach stwierdziłem że szkoda czasu i przełączyłem się ponownie w tryb Debug i o dziwo tu też mi teraz nie tworzy .lib. Po odzyskaniu z kopii mam to samo. W innym projekcie jest ok.
Jaka może być przyczyna?
- Rejestracja:ponad 10 lat
- Ostatnio:prawie 7 lat
- Postów:38
- Rejestracja:ponad 10 lat
- Ostatnio:prawie 7 lat
- Postów:38
------ Rebuild All started: Project: ACNETWrapperBib, Configuration: Debug Win32 ------
Stdafx.cpp
ACNETWrapperBib.cpp
AssemblyInfo.cpp
Generating Code...
.NETFramework,Version=v4.0.AssemblyAttributes.cpp
ACNETWrapperBib.vcxproj -> c:\windows\system32\ACNETWrapperBibD.dll
------ Rebuild All started: Project: ACNETWrapper, Configuration: Debug Win32 ------
stdafx.cpp
connectwrapper.cpp
ACNETWrapper.cpp
ClassWrapper.cpp
Generating Code...
.NETFramework,Version=v4.0.AssemblyAttributes.cpp
LINK : fatal error LNK1104: cannot open file 'ACNETWrapperBibD.lib'
========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========
Jak widać nie jest tworzony lib, a jest potrzebny przy linkowaniu exe. Do tej pory były tworzone lib i exp ale po przestawieniu na Relase się zepsuło.
Jak dodałem nową bibliotekę do projektu bo pomyślałem że przeniosę klasy i będzie po problemie to też nie tworzy mi tych lib

- Rejestracja:ponad 13 lat
- Ostatnio:prawie 3 lata
- Postów:4882
LINK : fatal error LNK1104: cannot open file 'ACNETWrapperBibD.lib'
masz ta libke w projekcie? masz ja w opcjach linkera?
zobacz ze ona ma D na samym koncu
- Rejestracja:ponad 10 lat
- Ostatnio:prawie 7 lat
- Postów:38
Oczywiście że mam wstawioną libkę w opcjach linkera ACNETWrapper bo jej wymaga.
Ta literka D jest dodana umyślnie i oznacza Debug. Tak ma być.
Chodzi o to że podczas kompilacji ACNETWrapperBib.vcxproj przed linią gdzie tworzony jest dll
ACNETWrapperBib.vcxproj -> c:\windows\system32\ACNETWrapperBibD.dll
powinna być linia w stylu
Creating library D:\Kompilatory\msdev\BIBLIB\ACNetWrapperBibD.lib and object D:\Kompilatory\msdev\BIBLIB\ACNetWrapperBibD.exp
a niestety jej nie ma i nie są tworzone lib i exp

- Rejestracja:ponad 21 lat
- Ostatnio:3 minuty
Ta literka D jest dodana umyślnie i oznacza Debug. Tak ma być.
No a w Release powinno jej nie być.
Czyli:
ACNETWrapperBibD.dll
- debug
ACNETWrapperBib.dll
- release
ACNETWrapperBib.vcxproj -> c:\windows\system32\ACNETWrapperBibD.dll
Czy ty kompilujesz do c:\windows\system32? Tego po pierwsze nie powinno się robić, a po drugie pewnie i tak nie działa z powodu braku uprawnień.
- Rejestracja:ponad 10 lat
- Ostatnio:prawie 7 lat
- Postów:38
I dokładnie takie dll powstają w system32 tylko lib nie powstaje.
Na pewno ścieżka do katalogu dla lib jest poprawna bo skopiowałem ją z projektu który tworzy je.
Co ciekawe wszystkie parametry ustawiłem identycznie w obu projektach i dalej w jednym tworzy, a w tym nie tworzy.
Co gorsze jak utworzyłem nowy solution i dodałem bibliotekę i całość skonfigurowałem to też mi nie tworzy lib
- Rejestracja:ponad 10 lat
- Ostatnio:prawie 7 lat
- Postów:38
No właśnie. Referencja dodana i tak wołał liba. W tym rzecz że jak dodaję referencję to w komendzie dla linkera pokazuje się właśnie do niego lib więc muszę mieć choćby pusty lib.
Wcześniej program się linkował bo pewnie kiedyś był utworzony i tak został.