Podrobné pokyny: Vytvoření a použití spravovaných sestavení (C++)
Spravované sestavení je druh knihovny, kterou lze vytvořit pro efektivní znovu použití kódu. Namísto opětovné implementace stejných rutin v mnoha programech, stačí je zapsat jednou a potom je odkazovat z aplikací, které funkci vyžadují.
Tento návod pokrývá následující úkoly:
Vytvoření projektu knihovny tříd.
Přidání třídy do knihovny tříd.
Vytvoření aplikace, která odkazuje na knihovnu tříd.
Využití funkcí z knihovny tříd v aplikaci.
Spuštění aplikace.
Požadavky
Chcete-li dokončit tento návod, je třeba porozumět základům jazyka C++. Pokud jste začali učení jazyka C++, doporučujeme "Začátečník C++ Guide" podle Schildt Jahoda, která je k dispozici na Začátečník vývojář výukové centrum na webu MSDN.
Vytvoření projektu knihovny tříd
V nabídce Soubor přejděte na příkaz Nový a klikněte na Projekt.
V podokně Typ projektu pod Visual C++ vyberte CLR.
Každý typ projektu v této skupině vytvoří projekt určený pro modul CLR (Common Language Runtime).
V podokně Šablony vyberte Knihovna tříd.
V poli Název zadejte název projektu, například MathFuncsAssembly. V poli Název řešení zadejte název řešení, například ManagedAssemblies.
Klepnutím na tlačítko OK vytvoříte projekt.
Ve výchozím nastavení je vytvořený projekt nastaven na použití předkompilovaných hlaviček. Chcete-li zakázat předkompilované hlavičky pro projekt MathFuncsAssembly, v Průzkumníku řešení vyberte projekt a potom v nabídce Projekt klikněte na Vlastnosti. Rozbalte uzel Vlastnosti konfigurace, rozbalte uzel C/C++ a pak vyberte Precompiled Headers. V seznamu vedle Create/Use Precompiled Header zvolte Not Using Precompiled Header. Kliknutím na tlačítko OK změny uložte. Další informace naleznete v tématu Creating Precompiled Header Files.
Přidání třídy do knihovny tříd
Po vytvoření knihovny tříd CLR, vygeneruje průvodce základní třídu. Generované soubory hlaviček a zdrojové soubory mají stejný název, jako jste je název projektu, který jste zadali při jeho vytváření. V tomto příkladu jsou pojmenovány MathFuncsAssembly.H a MathFuncsAssembly.CPP.
Nahraďte existující kód v MathFuncsAssembly.H pomocí základní třídy, která se nazývá MyMathFuncsAssembly. Tato třída provádí běžné matematické operace, například sčítání, odčítání, násobení a dělení. Váš kód by měl být podobný následujícímu příkladu kódu.
// MathFuncsAssembly.h using namespace System; namespace MathFuncs { public ref class MyMathFuncs { public: // Returns a + b static double Add(double a, double b); // Returns a - b static double Subtract(double a, double b); // Returns a * b static double Multiply(double a, double b); // Returns a / b // Throws DivideByZeroException if b is 0 static double Divide(double a, double b); }; }
Implementujte ve zdrojovém souboru funkcionalitu pro MyMathFuncs. Váš kód by měl být podobný následujícímu příkladu kódu.
// MathFuncsAssembly.cpp // compile with: /clr /LD #include "MathFuncsAssembly.h" namespace MathFuncs { double MyMathFuncs::Add(double a, double b) { return a + b; } double MyMathFuncs::Subtract(double a, double b) { return a - b; } double MyMathFuncs::Multiply(double a, double b) { return a * b; } double MyMathFuncs::Divide(double a, double b) { if (b == 0) { throw gcnew DivideByZeroException("b cannot be zero!"); } return a / b; } }
Zkompilujte knihovnu tříd kliknutím na Sestavit řešení v nabídce Sestavení. Tím vytvoříte dynamickou knihovnu (DLL), kterou mohou použit ostatní programy. Další informace o knihovnách DLL naleznete v tématu Knihovny DLL.
Vytvoření aplikace konzoly odkazující na knihovnu tříd
V nabídce Soubor přejděte na příkaz Nový a klikněte na Projekt.
V podokně Typ projektu pod Visual C++ vyberte CLR.
V podokně Šablony zvolte Aplikace konzoly CLR.
V poli Název zadejte název projektu, například MyExecRefsAssembly. V seznamu vedle Řešení vyberte Přidat k řešení, chcete-li přidat nový projekt do řešení, které obsahuje knihovnu tříd.
Klepnutím na tlačítko OK vytvoříte projekt.
Zakažte předkompilované hlavičky pro projekt MyExecRefsAssembly jeho výběrem v Průzkumníku řešení a potom v nabídce Projekt klikněte na Vlastnosti. Rozbalte uzel Vlastnosti konfigurace, rozbalte uzel C/C++ a pak vyberte Precompiled Headers. V seznamu vedle Create/Use Precompiled Header zvolte Not Using Precompiled Header. Kliknutím na tlačítko OK změny uložte.
Využití funkcí z knihovny tříd v aplikaci konzoly
Po vytvoření aplikace konzoly CLR, vygeneruje průvodce program, který do konzoly vypíše „Hello World”. Vygenerovaný zdrojový soubor má stejný název, jako jste zadali projektu při jeho vytvoření. V tomto příkladu je název MyExecRefsAssembly.CPP.
Pro použití matematických rutin, které byly vytvořeny v knihovně tříd, je třeba na knihovnu odkázat. To provedete volbou projektu MyExecRefsAssembly v Průzkumníku řešení a potom v nabídce Projekt klikněte na Vlastnosti. V dialogovém okně Stránky vlastností rozbalte uzel Společná nastavení, vyberte Framework and References a potom klikněte na Přidat nový odkaz. Další informace naleznete v tématu Architektura a odkazy, Společná nastavení, Dialogové okno <Projectname> Stránky vlastností.
Dialogové okno Přidat odkaz obsahuje seznam všech knihoven, které lze odkazovat. Karta .NET obsahuje seznam knihoven, které jsou součástí rozhraní .NET Framework. Karta COM obsahuje všechny komponenty modelu COM v počítači. Karta Projekt obsahuje seznam všech projektů v aktuálním řešení a všechny knihovny, které obsahují. Na kartě Projekty vyberte MathFuncsAssembly a potom klikněte na OK.
Poznámka
Sestavení lze odkazovat přímo ze zdrojového souboru přidáním direktivy #using, například #using <MathFuncsAssembly.dll>. Další informace naleznete v tématu The #using Directive.
Třídu MyMathFuncs lze nyní v této aplikaci použít. V MyExecRefsAssembly.CPP nahraďte obsah funkcí následujícím kódem.
// MyExecRefsAssembly.cpp // compile with: /clr /FUMathFuncsAssembly.dll using namespace System; int main(array<System::String ^> ^args) { double a = 7.4; int b = 99; Console::WriteLine("a + b = {0}", MathFuncs::MyMathFuncs::Add(a, b)); Console::WriteLine("a - b = {0}", MathFuncs::MyMathFuncs::Subtract(a, b)); Console::WriteLine("a * b = {0}", MathFuncs::MyMathFuncs::Multiply(a, b)); Console::WriteLine("a / b = {0}", MathFuncs::MyMathFuncs::Divide(a, b)); return 0; }
Sestavte projekt kliknutím na Sestavit řešení v nabídce Sestavení.
Spuštění aplikace
Ujistěte se, že MyExecRefsAssembly je nastaven jako výchozí projekt tím, že jej vyberete v Průzkumníku řešení a kliknete na Set As StartUp Project v nabídce Projekt.
Kliknutím na příkaz Spustit bez ladění v nabídce Ladění spusťte projekt. Výstup měl být podobný následujícímu příkladu.
a + b = 106.4 a - b = -91.6 a * b = 732.6 a / b = 0.0747474747474748
Další kroky
Předchozí téma: Podrobné pokyny: Vytvoření a použití statické knihovny (C++). Další téma: Kam jít dále (C++).