title: g++ linking order dependency when linking c code to c++ code
body: <p>Prior to today I had always believed that the order that objects and libraries were passed to g++ during the linking stage was unimportant. Then, today, I tried to link from c++ code to c code. I wrapped all the C headers in an extern "C" block but the linker still had difficulties finding symbols which I knew were in the C object archives.</p>
  
  <p>Perplexed, I created a relatively simple example to isolate the linking error but much to my surprise, the simpler example linked without any problems.</p>
  
  <p>After a little trial and error, I found that by emulating the linking pattern used in the simple example, I could get the main code to link OK. The pattern was object code first, object archives second eg: </p>
  
  <p><code>g++ -o serverCpp serverCpp.o algoC.o libcrypto.a</code> </p>
  
  <p>Can anyone shed some light on why this might be so?. I've never seen this problem when linking ordinary c++ code.</p>