Linking static libraries in visual studio with composite dependencies?

The dependecies should not matter! They may even be circular ,like A refs B and B refs A. It sounds to me (since you get linker errors) that either you don't have headerfiles for those libs (do you declare funcs from A in B by hand or funcs from B in A) or the headerfiles compile differently in your program and in your libs (due to some #define or compiler option).

Do you use the same calling conventions in both prog and libs?

I have all of the headers included and all of the methods use the same calling convention and there is no dllexport/dllimport going on. If there was I would have expected to see A reference the __imp symbol because then it would have actually existed in B's symbol table. – insipid Nov 24 '10 at 16:55 1 you could try preprocess to a file for the offending lib and search for your symptom.

This may point you directly to the problem. – Edwin Nov 24 '10 at 17:03 see the edit about the preprocessor – insipid Nov 24 '10 at 17:12 sorry didn't read yor edit right! – Edwin Nov 24 '10 at 17:19 Your edit means just that usage of B by lib A is different of usage of B by your program.

Preprocesing to file can give you insight to what different when youre headers are included. – Edwin Nov 24 '10 at 17:28.

Since your used lib B as a DLL before is it possible that when you build lib A your lib B was still a DLL and when you changed lib to library you forgot to rebuild A.

1 Good suggestion, but I have rebuilt A several times since changing B to static. – insipid Nov 24 '10 at 17:47 Ok ,but do you have an additional library path to your libs or do you copy your libs to a place in your lib-search-path and forgot about it. Or even both these things and there still exists an old version which is found first.

– Edwin Nov 24 '10 at 18:03.

I do not have MSVS 2010 to look at, so take this with a grain of salt. If the symbols have imp in the name, that means either there's a declspec(dllimport) floating around somewhere, a (possibly embedded in the code) compiler switch forcing A to see B as a DLL or you're linking old stuff and not what's currently being produced by the build process. Was the project you're using imported from an older version of MSVS?

I had a similar problem with a poorly managed project that was imported into MSVS 2008 a few years ago... Either way, check A's build environment carefully and make sure you look for pragmas that embed compiler/linker switches.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions