[VC++] Cum fac un DLL de mesaje?

Mediul de dezvoltare Visual C++, instalare, setari, debugger, compilator, linker si documentatie (forum moderat)
Post Reply
User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

[VC++] Cum fac un DLL de mesaje?

Post by Ovidiu Cucu » 11 Jan 2012, 16:37

Intrebare
O cale de a loga diverse evenimente este folosind eventlog-urile implementate in sistemul Windows.
In acestea nu se tin textele propriuzise, urmand ca acestea sa fie citite din resurse continute in fisiere dll sau exe.
Cum fac un resource-only DLL pentru acest scop?

Raspuns
Visual Studio 6.0
  1. Creez un proiect nou tip Win32 Dynamic-Link Library, sa-i zicem "MyMessages".
    01 - New Project.jpg
    01 - New Project.jpg (41.35 KiB) Viewed 3636 times
  2. Aleg An empty DLL project.
    02 - Empty DLL Project.jpg
    02 - Empty DLL Project.jpg (26.92 KiB) Viewed 3636 times
  3. Merg la Project Settings/Link si adaug optiunea /NOENTRY (No Entry Point).
    03 - No Entry Point.jpg
    03 - No Entry Point.jpg (37.62 KiB) Viewed 3549 times
  4. Adaug un fisier text de mesaje, de exemplu "MyMessages.mc".
    04 - Add Messages Text File (MC).jpg
    04 - Add Messages Text File (MC).jpg (28.75 KiB) Viewed 3636 times
  5. Completez fisierul .mc cu un minim de intrari. Sa zicem ca pun o categorie:

    Code: Select all

    MessageIdTypedef=WORD
    
    MessageId=0x1
    SymbolicName=CATEGORY_GENERAL
    Language=English
    General
    .
    ; /* more entries go here */
    
    Specificatii si exemple se pot gasi in MSDN.
  6. Merg la Project Settings/Pre-link Step si adaug o comanda pentru compilatorul de mesaje (MC.exe).
    06 - Message Compiler Command.jpg
    06 - Message Compiler Command.jpg (22.27 KiB) Viewed 3636 times
  7. Dau un build (F7). Daca totul pana aici e OK, se afiseza:

    Code: Select all

    Compiling...
    MyMessages.cpp
    MC: Compiling MyMessages.mc
    Linking...
    
    MyMessages.dll - 0 error(s), 0 warning(s)
    Compilatorul de mesaje a generat un fisier binar MSG00001.bin, un script de resurse MyMessages.rc si un header MyMessages.h care il voi putea folosi in alte proiecte.
  8. In fereastra File View dau right-click pe proiect si adaug MyMessages.rc si MyMessages.h.
    08 - Insert Files into Project.jpg
    08 - Insert Files into Project.jpg (22.11 KiB) Viewed 3636 times
  9. Completez MC-ul cu mesaje, fac build etc.


Resurse



User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

[VC++] Cum fac un DLL de mesaje? (2)

Post by Ovidiu Cucu » 11 Jan 2012, 17:45

.
Visual Studio 2003...2010
  1. Creez un proiect nou tip Win32 Project
    11 - New Project.jpg
    11 - New Project.jpg (24.09 KiB) Viewed 3631 times
  2. In Win32 Application Wizard, selectez "DLL" si "Empty Project".
    12 - Win32 Application Wizard.jpg
    12 - Win32 Application Wizard.jpg (16.87 KiB) Viewed 3631 times
  3. Merg la Project Property/Linker/Advanced si pun pe "Yes(/NOENTRY)" proprietatea No Entry Point.
    13 - No Entry Point.jpg
    13 - No Entry Point.jpg (40.09 KiB) Viewed 3550 times
  4. Adaug un fisier text de mesaje, de exemplu "MyMessages.mc".
    14 - Add MC File.jpg
    14 - Add MC File.jpg (25.67 KiB) Viewed 3631 times
  5. Completez fisierul .mc cu un minim de intrari. Sa zicem ca pun o categorie:

    Code: Select all

    MessageIdTypedef=WORD
    
    MessageId=0x1
    SymbolicName=CATEGORY_GENERAL
    Language=English
    General
    .
    ; /* more entries go here */
    
    Specificatii si exemple se pot gasi in MSDN.
  6. Merg la Project Properties/Build Events/Pre-link Event si adaug o comanda pentru compilatorul de mesaje (MC.exe).
    16 - Pre-Link Event Command.jpg
    16 - Pre-Link Event Command.jpg (23.74 KiB) Viewed 3631 times
  7. Dau build la solutie.
    Compilatorul de mesaje genereaza un fisier binar MSG00001.bin, un script de resurse MyMessages.rc si un header MyMessages.h care il voi putea folosi in alte proiecte.
  8. In fereastra Solution Explorer dau right-click pe proiect si adaug MyMessages.rc si MyMessages.h.
    18 - Add Existing Items.jpg
    18 - Add Existing Items.jpg (48.42 KiB) Viewed 3631 times
  9. Completez MC-ul cu mesaje, s.a.m.d.
Resurse

Post Reply