2012-08-30 5 views
2

Je dois lier la bibliothèque statique de l'API C++ Abaqus ODB dans une autre bibliothèque statique. Je peux obtenir ceci pour "travailler" mais j'obtiens beaucoup d'avertissements de linker. Tous les avertissements sont LNK4006 et LNK4221 et concernent les bibliothèques d'API.Liaison de la bibliothèque statique dans une autre bibliothèque statique

Je veux lier la bibliothèque statique résultante dans le projet principal. Quand je fais cela, l'application démarre et me donne un message comme The application was unable to start correctly 0xc000007b.

Si ce n'est pas claire: API Lib ->MyProj Lib ->MainProj


S'il vous plaît voir la réponse de Paul ci-dessous. Vous ne pouvez pas imbriquer des bibliothèques statiques comme celle-ci et si vous pensez en avoir besoin, vous devez en apprendre davantage sur la phase de liaison. Au lieu de cela, le projet principal doit lier les deux bibliothèques statiques dépendantes.

Répondre

4

Vous ne pouvez pas "inclure une bibliothèque dans une bibliothèque". Vous liez les deux bibliothèques à votre application, ce que vous avez déjà fait. Vous n'avez qu'à suivre les règles générales d'un programme C++: une seule définition d'un symbole est autorisée et vous devez éviter les conflits de noms potentiels.

+0

Donc, je peux inclure les deux bibliothèques dans le projet principal même si l'une dépend de l'autre? Je comprends qu'une seule définition d'un symbole est permise. Les bibliothèques d'API sont en boîte. – Derek

+1

Non, vous devez lier les deux bibliothèques au programme résultant de votre projet principal. Dans VS, vous créez un type de projet "exécutable" et définissez les deux bibliothèques comme des "références". –

+0

'MyProj Lib' dépend de' API Lib'. Je peux les relier tous les deux dans le 'MainProj', mais comment cela fonctionnerait-il quand je construirais' MyProj Lib'? – Derek

Questions connexes