Avatar billede soreno Praktikant
20. april 2004 - 18:08 Der er 15 kommentarer og
2 løsninger

cl.exe og specificering af libs

Jeg bruger cl.exe til at compile og linke med, men er stødt ind i et mindre problem.

Linkning af et specifikt program kræver at der linkes med "AdvAPI32.Lib". Dette ønsker jeg at gøre fra kommandolinien.

Således gør jeg nu:
cl /O1 /EHs /TP /ML "main.cpp"

Hvordan får jeg flettet "AdvAPI32.Lib" ind i linien ?

Koden ser (forsimplet) således ud:
#include <windows.h>
#include <string.h>

int main(int argc, char **argv)
{
    HKEY hKey;
    const DWORD bufferSize = 16;
    char buffer[bufferSize];

    if(RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Foo\\Settings", 0, 0, 0, KEY_WRITE, 0, &hKey, 0) == ERROR_SUCCESS)
    {
        strcpy(buffer, "1234567890123");
        RegSetValueEx(hKey, "key", 0, REG_SZ, (LPBYTE)&buffer, bufferSize);
        RegCloseKey(hKey);
    }

    return 0;
}

Jeg har platformSDK og vc toolkit installeret.
Avatar billede soreno Praktikant
20. april 2004 - 18:11 #1
Forresten er mit environment som følger:
INCLUDE=C:\progra~1\util\vc++\include
LIB=C:\progra~1\util\vc++\lib
PATH=[..];C:\progra~1\util\vc++\bin;[..]
VCToolkitInstallDir=C:\progra~1\util\vc++\

Og der er ikke konflikt med andre compilere, med hensyn til path.. :-)
Avatar billede jpk Nybegynder
20. april 2004 - 18:17 #2
Prøv:

cl /O1 /EHs /TP /ML "main.cpp" /LINK "AdvAPI32.Lib"
Avatar billede jpk Nybegynder
20. april 2004 - 18:17 #3
Evt. med path til AdvAPI32.Lib
Avatar billede soreno Praktikant
20. april 2004 - 18:30 #4
Dette:
cl /O1 /EHs /TP /ML "main.cpp" /LINK "AdvAPI32.Lib"

outputter:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3052 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

cl : Command line warning D4002 : ignoring unknown option '/LINK'
main.cpp
AdvAPI32.Lib
c1xx : fatal error C1083: Cannot open source file: 'AdvAPI32.Lib': No such file
or directory
Generating Code...
Avatar billede arne_v Ekspert
20. april 2004 - 18:31 #5
cl /O1 /EHs /TP /ML main.cpp advapi32.lib
Avatar billede soreno Praktikant
20. april 2004 - 18:31 #6
Path er sat til at inkludere lib directoriet.
Avatar billede soreno Praktikant
20. april 2004 - 18:33 #7
Dette:
cl /O1 /EHs /TP /ML main.cpp advapi32.lib

Giver:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3052 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

main.cpp
advapi32.lib
c1xx : fatal error C1083: Cannot open source file: 'advapi32.lib': No such file
or directory
Generating Code...
Avatar billede soreno Praktikant
20. april 2004 - 18:34 #8
Hov, nu fandt jeg noget.
cl er åbenbart case-sensitive.

Dette virker:
cl /O1 /EHs /TP /ML main.cpp /link advapi32.lib
Avatar billede jpk Nybegynder
20. april 2004 - 18:36 #9
Hvad med "link" (små bogstaver)?
Avatar billede jpk Nybegynder
20. april 2004 - 18:37 #10
Okay, du opdagede det først...
Avatar billede arne_v Ekspert
20. april 2004 - 18:37 #11
Hvis LIB environment peger rigtigt så bør en simpel angivelse af lib også virke.
Avatar billede arne_v Ekspert
20. april 2004 - 18:41 #12
Nej - forkert.

Hvis du undlader /TP så kan du bare skrive simpel angivelse af lib.

/TP compile all files as .cpp

"all" skal tilsyneladende tages meget bogstaveligt !
Avatar billede soreno Praktikant
20. april 2004 - 19:12 #13
Ok, så blev der styr på det. :-)

Hvis i begge vil lægge et svar..
Avatar billede arne_v Ekspert
20. april 2004 - 19:34 #14
svar
Avatar billede soreno Praktikant
20. april 2004 - 19:50 #15
Egentlig lidt komisk at "all" skal tages så bogstavligt :-)
Avatar billede arne_v Ekspert
20. april 2004 - 19:52 #16
Jeg synes også at den skulle have nøjes med .c .cc og .cpp, men ...
Avatar billede jpk Nybegynder
21. april 2004 - 07:58 #17
Jeg var desværre smuttet, så jeg nåede ikke at svare i går, men her...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester