Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[hs] lib.exe bug !

8 réponses
Avatar
Sivaller
Bonjour,
Je ne comprend pas le programme lib.exe fonctionne bien sous l'environnement
IDE.
mais en ligne de commande il fonctionne que dalle (0/20) ; ca bug de chez
bug !!!

J'execute lib.exe malibrary.dll
et me renvoie un message sympatique car il bug vachement ! :
malibrary.dll : fatal error LNK1136: invalid or corrupt file

J'ai créer ma library en Delphi et je souhaiterai l'utiliser sous MSVC !
mais je ne peux pas
car la commande lib.exe me bloque (il bug !!!)

Ou alors comment sortir un LIB utilisable sur MSVC depuis une .DLL ?

Merci bcp ;

8 réponses

Avatar
kanze
Sivaller wrote:

Je ne comprend pas le programme lib.exe fonctionne bien sous
l'environnement IDE. mais en ligne de commande il fonctionne
que dalle (0/20) ; ca bug de chez bug !!!


C'est marrant, parce que je ne m'en sers qu'en ligne de
commande, et je n'en ai jamais eu de problèmes.

J'execute lib.exe malibrary.dll
et me renvoie un message sympatique car il bug vachement ! :
malibrary.dll : fatal error LNK1136: invalid or corrupt file


Qu'est-ce que tu essaies de faire ? Parce que je ne vois pas de
cas où je donnerais lib.exe un seul paramètre, qui est le nom
d'un fichier déjà linké (.dll ou .exe, sous Windows).
Normalement (en supposant que tu veux dire le lib.exe de Visual
Studios), il faut bien 1) lui donner le nom du fichier de la
bibliothèque, au moyen d'une option /OUT:, et 2) lui donner une
liste de fichiers objets (.obj) qu'on veut mettre dans le
bibliothèque.

J'ai créer ma library en Delphi et je souhaiterai l'utiliser
sous MSVC !


Ce qui n'est pas forcément possible. Je ne connais pas Delphi,
mais je sais qu'on ne peut pas lié des modules C++ compilées
avec d'autres compilateurs. Au moins que Delphi respecte l'API
C.

Et pour lier ta bibliothèque avec la reste de l'exécutable,
c'est plutôt link.exe qu'il faut, non ? (Je ne suis pas trop
sûr comment fonction l'édition de liens avec un .dll sous Visual
Studios, mais je ne crois pas que lib.exe y a la moindre chose à
voir.)

mais je ne peux pas car la commande lib.exe me bloque (il bug
!!!)


Je crois que le problème se trouve entre l'écran et la chaise,
plutôt que dans le programme lib.exe.

Ou alors comment sortir un LIB utilisable sur MSVC depuis une
.DLL ?


Je ne sais pas d'office, mais ça m'étonnerait que ça ne soit pas
documenté dans la documentation de Visual Studios (qui m'a l'air
assez complète).

En gros, si tu ne sais pas utiliser un outil, il faut mieux lire
la doc pour l'apprendre, plutôt que de dire que l'outil est
bogué, et se donner l'air d'un idiot.

(Aussi, il existe bien des groupes spécialisés dans le Visual
Studios et le développement sous Windows. Tu risques plus de
trouver une bonne réponse là qu'ici, où certains d'entre nous ne
voient Windows qu'occasionnellement.)

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Avatar
Alain Gaillard

J'ai créer ma library en Delphi et je souhaiterai l'utiliser
sous MSVC !



Ce qui n'est pas forcément possible.


En effet ça ne l'est pas.

Je ne connais pas Delphi,
mais je sais qu'on ne peut pas lié des modules C++ compilées
avec d'autres compilateurs. Au moins que Delphi respecte l'API
C.


Il n'en est rien. Delphi c'est Pascal, et même la convention d'appel des
fonctions est différente.

Et puis, autre exemple, Delphi travaille par comptage de référence
contrairement à C++. Donc pas de constructeur de copie (toujours par
exemple), mais un comptage de références géré par le runtime. La
construction des objets est différente aussi, etc, etc, etc. Alors
comment on fait pour utiliser une classe Delphi avec C++ ?
Le simple fait d'y penser est folie.


Je crois que le problème se trouve entre l'écran et la chaise,
plutôt que dans le programme lib.exe.


LOL !! :-)
Et criant de vérité:-)


--
Alain


Avatar
Stephane Wirtel
Et puis, autre exemple, Delphi travaille par comptage de référence
contrairement à C++. Donc pas de constructeur de copie (toujours par
exemple), mais un comptage de références géré par le runtime. La
construction des objets est différente aussi, etc, etc, etc. Alors
comment on fait pour utiliser une classe Delphi avec C++ ?
Le simple fait d'y penser est folie.
Euh, il faut savoir que la VCL de C++ Builder utilise des interfaces

par rapport à la VCL de Delphi :d

Donc, c'est possible, en plus, il faut utiliser les TObject, ça aide.

Avatar
Alain Gaillard
Et puis, autre exemple, Delphi travaille par comptage de référence
contrairement à C++. Donc pas de constructeur de copie (toujours par
exemple), mais un comptage de références géré par le runtime. La
construction des objets est différente aussi, etc, etc, etc. Alors
comment on fait pour utiliser une classe Delphi avec C++ ?
Le simple fait d'y penser est folie.


Euh, il faut savoir que la VCL de C++ Builder utilise des interfaces
par rapport à la VCL de Delphi :d

Donc, c'est possible, en plus, il faut utiliser les TObject, ça aide.


Euh, il faut savoir que l'utilisation de la VCL sous C++Builder est
faite moyennant des extensions propriétéires à C++, et qui n'existent
évidemment pas en MSVC. Ca n'aide pas.


--
Alain


Avatar
Christophe de Vienne
Un peu gros, j'ose espérer que ça ne passera pas...

Sivaller a trollé :
J'ai essayez
F:ProjetprogrammeProgramLibrarymalibrary>e:lib.exe /OUT:malibrary.lib
/DEF:malibrary.def /NAME:malibrary.dll

j'ai déclaré ceci : extern void __declspec(dllexport) _stdcall _maproc();
dans main.cpp

Et le compilo buggé ! me génére l'erreur
test.obj : error LNK2001: unresolved external symbol "void __stdcall
_maproc(void)" (?_maproc@@YGXXZ)
Debug/test.exe : fatal error LNK1120: 1 unresolved externals


bug msvc !



Avatar
Sivaller
J'ai essayez
F:ProjetprogrammeProgramLibrarymalibrary>e:lib.exe /OUT:malibrary.lib
/DEF:malibrary.def /NAME:malibrary.dll

j'ai déclaré ceci : extern void __declspec(dllexport) _stdcall _maproc();
dans main.cpp

Et le compilo buggé ! me génére l'erreur
test.obj : error LNK2001: unresolved external symbol "void __stdcall
_maproc(void)" (?_maproc@@YGXXZ)
Debug/test.exe : fatal error LNK1120: 1 unresolved externals


bug msvc !

"kanze" a écrit dans le message de
news:
Sivaller wrote:

Je ne comprend pas le programme lib.exe fonctionne bien sous
l'environnement IDE. mais en ligne de commande il fonctionne
que dalle (0/20) ; ca bug de chez bug !!!


C'est marrant, parce que je ne m'en sers qu'en ligne de
commande, et je n'en ai jamais eu de problèmes.

J'execute lib.exe malibrary.dll
et me renvoie un message sympatique car il bug vachement ! :
malibrary.dll : fatal error LNK1136: invalid or corrupt file


Qu'est-ce que tu essaies de faire ? Parce que je ne vois pas de
cas où je donnerais lib.exe un seul paramètre, qui est le nom
d'un fichier déjà linké (.dll ou .exe, sous Windows).
Normalement (en supposant que tu veux dire le lib.exe de Visual
Studios), il faut bien 1) lui donner le nom du fichier de la
bibliothèque, au moyen d'une option /OUT:, et 2) lui donner une
liste de fichiers objets (.obj) qu'on veut mettre dans le
bibliothèque.

J'ai créer ma library en Delphi et je souhaiterai l'utiliser
sous MSVC !


Ce qui n'est pas forcément possible. Je ne connais pas Delphi,
mais je sais qu'on ne peut pas lié des modules C++ compilées
avec d'autres compilateurs. Au moins que Delphi respecte l'API
C.

Et pour lier ta bibliothèque avec la reste de l'exécutable,
c'est plutôt link.exe qu'il faut, non ? (Je ne suis pas trop
sûr comment fonction l'édition de liens avec un .dll sous Visual
Studios, mais je ne crois pas que lib.exe y a la moindre chose à
voir.)

mais je ne peux pas car la commande lib.exe me bloque (il bug
!!!)


Je crois que le problème se trouve entre l'écran et la chaise,
plutôt que dans le programme lib.exe.

Ou alors comment sortir un LIB utilisable sur MSVC depuis une
.DLL ?


Je ne sais pas d'office, mais ça m'étonnerait que ça ne soit pas
documenté dans la documentation de Visual Studios (qui m'a l'air
assez complète).

En gros, si tu ne sais pas utiliser un outil, il faut mieux lire
la doc pour l'apprendre, plutôt que de dire que l'outil est
bogué, et se donner l'air d'un idiot.

(Aussi, il existe bien des groupes spécialisés dans le Visual
Studios et le développement sous Windows. Tu risques plus de
trouver une bonne réponse là qu'ici, où certains d'entre nous ne
voient Windows qu'occasionnellement.)

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Avatar
Alain Gaillard
J'ai essayez
F:ProjetprogrammeProgramLibrarymalibrary>e:lib.exe /OUT:malibrary.lib
/DEF:malibrary.def /NAME:malibrary.dll

j'ai déclaré ceci : extern void __declspec(dllexport) _stdcall _maproc();
dans main.cpp

Et le compilo buggé ! me génére l'erreur
test.obj : error LNK2001: unresolved external symbol "void __stdcall
_maproc(void)" (?_maproc@@YGXXZ)
Debug/test.exe : fatal error LNK1120: 1 unresolved externals


bug msvc !


Il est pas buggué ton compilo, parce que d'abord le message émane de
l'éditeur de liens :-)
Ensuite tu as déclaré _maproc "extern". Je te fiche mon billet que la
définition de _maproc n'est nulle part ailleurs dans ton code.

--
Alain

Avatar
Sivaller