J'ai une erreur dans le linking: "error LNK2001: unresolved external symbol
_sr_getboardcnt" , ce qui me fait penser que mes libraires ne sont pas
trouvées. Mais si je change &brdcnt en brdcnt dans ma fonction ,j'ai
l'erreur de compilation suivante :" errorC2664 cannot convert 'int' to
'int' * ...." . ce qui me fait penser que la librairie déclarant la
fonction est bien trouvée (peut être pas ?).
Ma question est la suivante: une erreur LNK2001 est-elle uniquement due à un
problème de link ?
J'ai une erreur dans le linking: "error LNK2001: unresolved external symbol _sr_getboardcnt" ,
_sr_getboardcnt ou _sr_get_boarcnt ?
ce qui me fait penser que mes libraires ne sont pas trouvées. Mais si je change &brdcnt en brdcnt dans ma fonction ,j'ai l'erreur de compilation suivante :" errorC2664 cannot convert 'int' to 'int' * ...." . ce qui me fait penser que la librairie déclarant la fonction est bien trouvée (peut être pas ?).
Cela ne dit rien au sujet de la bibliothèque. La compilation a lieu avant le linking. Cette erreur dit simplement que le paramètre ne correspond pas à la déclaration de la fonction dans l'en-tête.
Ma question est la suivante: une erreur LNK2001 est-elle uniquement due à un problème de link ?
Oui.
-- Horst
On Wed, 30 Jun 2004 12:06:45 +0200, "Nicolas ROBERT"
<nicolas.robert@prospective-software.fr> wrote:
bonjour,
Je n'arrive pas à compiler mon code. J'ai écris la chose suivante:
J'ai une erreur dans le linking: "error LNK2001: unresolved external symbol
_sr_getboardcnt" ,
_sr_getboardcnt ou _sr_get_boarcnt ?
ce qui me fait penser que mes libraires ne sont pas
trouvées. Mais si je change &brdcnt en brdcnt dans ma fonction ,j'ai
l'erreur de compilation suivante :" errorC2664 cannot convert 'int' to
'int' * ...." . ce qui me fait penser que la librairie déclarant la
fonction est bien trouvée (peut être pas ?).
Cela ne dit rien au sujet de la bibliothèque. La compilation a lieu
avant le linking. Cette erreur dit simplement que le paramètre ne
correspond pas à la déclaration de la fonction dans l'en-tête.
Ma question est la suivante: une erreur LNK2001 est-elle uniquement due à un
problème de link ?
J'ai une erreur dans le linking: "error LNK2001: unresolved external symbol _sr_getboardcnt" ,
_sr_getboardcnt ou _sr_get_boarcnt ?
ce qui me fait penser que mes libraires ne sont pas trouvées. Mais si je change &brdcnt en brdcnt dans ma fonction ,j'ai l'erreur de compilation suivante :" errorC2664 cannot convert 'int' to 'int' * ...." . ce qui me fait penser que la librairie déclarant la fonction est bien trouvée (peut être pas ?).
Cela ne dit rien au sujet de la bibliothèque. La compilation a lieu avant le linking. Cette erreur dit simplement que le paramètre ne correspond pas à la déclaration de la fonction dans l'en-tête.
Ma question est la suivante: une erreur LNK2001 est-elle uniquement due à un problème de link ?
Oui.
-- Horst
Nicolas ROBERT
"Horst Kraemer" a écrit dans le message de news:
On Wed, 30 Jun 2004 12:06:45 +0200, "Nicolas ROBERT" wrote:
bonjour,
Je n'arrive pas à compiler mon code. J'ai écris la chose suivante:
J'ai une erreur dans le linking: "error LNK2001: unresolved external symbol
_sr_getboardcnt" ,
_sr_getboardcnt ou _sr_get_boarcnt ?
ce qui me fait penser que mes libraires ne sont pas trouvées. Mais si je change &brdcnt en brdcnt dans ma fonction ,j'ai l'erreur de compilation suivante :" errorC2664 cannot convert 'int' to 'int' * ...." . ce qui me fait penser que la librairie déclarant la fonction est bien trouvée (peut être pas ?).
Cela ne dit rien au sujet de la bibliothèque. La compilation a lieu avant le linking. Cette erreur dit simplement que le paramètre ne correspond pas à la déclaration de la fonction dans l'en-tête.
En effet, j'ai l'impression que cette fonction devrait retourner un long,
Mais quand je change le type de ma variable:
long rc=0; je retrouve le même msg d'erreur. La fonction est déclarée dans la bibliothèque (je m'améliore...) srllib.h dont voici un extrait:
#ifndef __SRLLIB_H__ #define __SRLLIB_H__
#include <windows.h>
(...)
extern long __cdecl sr_getboardcnt(char *brdname, int *brdcnt);
(...)
//-------- Elle est propriétaire. Je n'y ai pas touché. Je ne comprends pas bien la signification de la syntaxe extern long__cdecl extern= elle est déclaré encore ailleurs ? long__=elle retourne un long ? cdecl= ???
Ma question est la suivante: une erreur LNK2001 est-elle uniquement due à un
problème de link ?
Oui.
-- Horst
"Horst Kraemer" <horst.kraemer@epost.de> a écrit dans le message de
news:n355e0t93vrrh7hu5visg6f0921tb4e8tp@4ax.com...
On Wed, 30 Jun 2004 12:06:45 +0200, "Nicolas ROBERT"
<nicolas.robert@prospective-software.fr> wrote:
bonjour,
Je n'arrive pas à compiler mon code. J'ai écris la chose suivante:
J'ai une erreur dans le linking: "error LNK2001: unresolved external
symbol
_sr_getboardcnt" ,
_sr_getboardcnt ou _sr_get_boarcnt ?
ce qui me fait penser que mes libraires ne sont pas
trouvées. Mais si je change &brdcnt en brdcnt dans ma fonction ,j'ai
l'erreur de compilation suivante :" errorC2664 cannot convert 'int' to
'int' * ...." . ce qui me fait penser que la librairie déclarant la
fonction est bien trouvée (peut être pas ?).
Cela ne dit rien au sujet de la bibliothèque. La compilation a lieu
avant le linking. Cette erreur dit simplement que le paramètre ne
correspond pas à la déclaration de la fonction dans l'en-tête.
En effet, j'ai l'impression que cette fonction devrait retourner un long,
Mais quand je change le type de ma variable:
long rc=0;
je retrouve le même msg d'erreur. La fonction est déclarée dans la
bibliothèque (je m'améliore...) srllib.h dont voici un extrait:
#ifndef __SRLLIB_H__
#define __SRLLIB_H__
#include <windows.h>
(...)
extern long __cdecl sr_getboardcnt(char *brdname, int *brdcnt);
(...)
//--------
Elle est propriétaire. Je n'y ai pas touché.
Je ne comprends pas bien la signification de la syntaxe extern long__cdecl
extern= elle est déclaré encore ailleurs ?
long__=elle retourne un long ?
cdecl= ???
Ma question est la suivante: une erreur LNK2001 est-elle uniquement due
à un
J'ai une erreur dans le linking: "error LNK2001: unresolved external symbol
_sr_getboardcnt" ,
_sr_getboardcnt ou _sr_get_boarcnt ?
ce qui me fait penser que mes libraires ne sont pas trouvées. Mais si je change &brdcnt en brdcnt dans ma fonction ,j'ai l'erreur de compilation suivante :" errorC2664 cannot convert 'int' to 'int' * ...." . ce qui me fait penser que la librairie déclarant la fonction est bien trouvée (peut être pas ?).
Cela ne dit rien au sujet de la bibliothèque. La compilation a lieu avant le linking. Cette erreur dit simplement que le paramètre ne correspond pas à la déclaration de la fonction dans l'en-tête.
En effet, j'ai l'impression que cette fonction devrait retourner un long,
Mais quand je change le type de ma variable:
long rc=0; je retrouve le même msg d'erreur. La fonction est déclarée dans la bibliothèque (je m'améliore...) srllib.h dont voici un extrait:
#ifndef __SRLLIB_H__ #define __SRLLIB_H__
#include <windows.h>
(...)
extern long __cdecl sr_getboardcnt(char *brdname, int *brdcnt);
(...)
//-------- Elle est propriétaire. Je n'y ai pas touché. Je ne comprends pas bien la signification de la syntaxe extern long__cdecl extern= elle est déclaré encore ailleurs ? long__=elle retourne un long ? cdecl= ???
Ma question est la suivante: une erreur LNK2001 est-elle uniquement due à un
problème de link ?
Oui.
-- Horst
Vincent Guichard
... snip BlaBla + Code ...
J'explicite la réponse de Horst: Le premier message d'erreur est un message d'erreur du linker. Le second est un message d'erreur du compilateur.
Le premier te dit que la bibliothèque n'existe pas ou n'est pas trouvée. Le second te dit que l'appel de la fonction ne correspond pas à celui décrit dans le fichier de déclaration.
Conclusion: L'appel initialde ta fonction était bon (plus ou moins, à cause du cast implicite de la valeur de retour, mais un bon compilateur devrait indiquer un warning). Le second appel est faux.
donc: - ne pas confondre fichier de déclaration et bibliothèque. - vérifier que la biblmiothèque existe et est accessible (dans le chemin de recherche ou passée dans la ligne de commande du linker)
Vincent Guichard
...
snip BlaBla + Code
...
J'explicite la réponse de Horst:
Le premier message d'erreur est un message d'erreur du linker.
Le second est un message d'erreur du compilateur.
Le premier te dit que la bibliothèque n'existe pas ou n'est pas trouvée.
Le second te dit que l'appel de la fonction ne correspond pas à celui
décrit dans le fichier de déclaration.
Conclusion:
L'appel initialde ta fonction était bon (plus ou moins, à cause du cast
implicite de la valeur de retour, mais un bon compilateur devrait
indiquer un warning).
Le second appel est faux.
donc:
- ne pas confondre fichier de déclaration et bibliothèque.
- vérifier que la biblmiothèque existe et est accessible (dans le chemin
de recherche ou passée dans la ligne de commande du linker)
J'explicite la réponse de Horst: Le premier message d'erreur est un message d'erreur du linker. Le second est un message d'erreur du compilateur.
Le premier te dit que la bibliothèque n'existe pas ou n'est pas trouvée. Le second te dit que l'appel de la fonction ne correspond pas à celui décrit dans le fichier de déclaration.
Conclusion: L'appel initialde ta fonction était bon (plus ou moins, à cause du cast implicite de la valeur de retour, mais un bon compilateur devrait indiquer un warning). Le second appel est faux.
donc: - ne pas confondre fichier de déclaration et bibliothèque. - vérifier que la biblmiothèque existe et est accessible (dans le chemin de recherche ou passée dans la ligne de commande du linker)
Vincent Guichard
drkm
"Nicolas ROBERT" writes:
extern long __cdecl sr_getboardcnt(char *brdname, int *brdcnt);
Je ne comprends pas bien la signification de la syntaxe extern long__cdecl ^^^
Non. extern long __cdecl.
extern= elle est déclaré encore ailleurs ?
Elle est définie ailleurs. Il me semble que « extern » est le « storage class specifier » par défaut pour une déclaration de fonction.
long__=elle retourne un long ?
Non. long. Donc oui, elle retourne un long ;-)
cdecl= ???
Extension de ton compilo, ou macro d'une bibliothèque, ou macro utilisée par un outil externe, ou ...