Lors de la tentative d'intégration d'une fonction dans Visual C++ (2008 express), j'ai reçu une erreur de liaison, après une inspection étroite du code, ce que j'ai découvert essayer de mettre en ligne jette une exception ... si je supprime le jet d'exception, l'erreur de liaison disparaît, quelqu'un peut-il expliquer pourquoi c'est le cas?erreur de liaison dans Visual C++ lors de la tentative de fonctions inline
int com_ximpleware::FastIntBuffer::intAt(int index){
if (index < 0 || index > size - 1) {
throw InvalidArgumentException("invalid index range in FastIntBuffer's intAt()");
}
return ((int *) al->get(index>>exp))[index & r];
}
L'erreur de EXAxt est indiqué ci-dessous:
intHash.obj : error LNK2019: unresolved external symbol "public: int __thiscall com_ximpleware::FastIntBuffer::intAt(int)" ([email protected]@[email protected]@[email protected]) referenced in function [email protected]@[email protected]@[email protected]$0
1>C:\new_cvs\cpp_test1\Debug\cpp_test1.exe : fatal error LNK1120: 1 unresolved externals
une chose, cette fonction a été invoquée autre normalement, la partie appelant de la fonction n'a pas été inclus.
L'avez-vous déplacé dans un fichier d'en-tête lorsque vous l'avez inséré? –
Je mets la définition (c'est-à-dire l'implémentation) dans l'entête et il n'y a pas de problème ... dois-je la déplacer dans l'en-tête pour l'incruster? Je pensais pouvoir le déclarer comme une fonction intégrée, non? –
il doit être visible partout où il est appelé, donc généralement il doit être dans le fichier d'en-tête. – Darryl