Note that there are some explanatory texts on larger screens.

plurals
  1. POc++ linker error: undefined references only on optimized build
    primarykey
    data
    text
    <p>I'm getting an undefined references linker error <em>only</em> when linking optimized objects files, <em>not</em> when linking unoptimized object files. I don't understand what the problem is or could be.</p> <p>Here is my unoptimized build:</p> <pre> Building file: ../COMPASS.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"COMPASS.d" -MT"COMPASS.d" -o"COMPASS.o" "../COMPASS.cpp" Finished building: ../COMPASS.cpp Building file: ../PSA.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"PSA.d" -MT"PSA.d" -o"PSA.o" "../PSA.cpp" Finished building: ../PSA.cpp Building file: ../SAR.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"SAR.d" -MT"SAR.d" -o"SAR.o" "../SAR.cpp" Finished building: ../SAR.cpp Building file: ../constraints.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"constraints.d" -MT"constraints.d" -o"constraints.o" "../constraints.cpp" Finished building: ../constraints.cpp Building file: ../genetic.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"genetic.d" -MT"genetic.d" -o"genetic.o" "../genetic.cpp" Finished building: ../genetic.cpp Building file: ../globals.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"globals.d" -MT"globals.d" -o"globals.o" "../globals.cpp" Finished building: ../globals.cpp Building file: ../logging.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"logging.d" -MT"logging.d" -o"logging.o" "../logging.cpp" Finished building: ../logging.cpp Building file: ../main.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"main.d" -MT"main.d" -o"main.o" "../main.cpp" Finished building: ../main.cpp Building file: ../sampling.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"sampling.d" -MT"sampling.d" -o"sampling.o" "../sampling.cpp" Finished building: ../sampling.cpp Building file: ../simulation1.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"simulation1.d" -MT"simulation1.d" -o"simulation1.o" "../simulation1.cpp" ../globals.h: At global scope: ../globals.h:43: warning: inline function 'double showDecimals(const double&, const int&)' used but never defined Finished building: ../simulation1.cpp Building file: ../test_function.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"test_function.d" -MT"test_function.d" -o"test_function.o" "../test_function.cpp" Finished building: ../test_function.cpp Building target: pc2 Invoking: GCC C++ Linker g++ -pg -fopenmp -pg -o"pc2" ./COMPASS.o ./PSA.o ./SAR.o ./constraints.o ./genetic.o ./globals.o ./logging.o ./main.o ./sampling.o ./simulation1.o ./test_function.o Finished building target: pc2 </pre> <p>Here is my optimized build:</p> <pre> Building file: ../COMPASS.cpp Invoking: GCC C++ Compiler g++ -O3 -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"COMPASS.d" -MT"COMPASS.d" -o"COMPASS.o" "../COMPASS.cpp" Finished building: ../COMPASS.cpp Building file: ../PSA.cpp Invoking: GCC C++ Compiler g++ -O3 -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"PSA.d" -MT"PSA.d" -o"PSA.o" "../PSA.cpp" Finished building: ../PSA.cpp Building file: ../SAR.cpp Invoking: GCC C++ Compiler g++ -O3 -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"SAR.d" -MT"SAR.d" -o"SAR.o" "../SAR.cpp" Finished building: ../SAR.cpp Building file: ../constraints.cpp Invoking: GCC C++ Compiler g++ -O3 -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"constraints.d" -MT"constraints.d" -o"constraints.o" "../constraints.cpp" Finished building: ../constraints.cpp Building file: ../genetic.cpp Invoking: GCC C++ Compiler g++ -O3 -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"genetic.d" -MT"genetic.d" -o"genetic.o" "../genetic.cpp" Finished building: ../genetic.cpp Building file: ../globals.cpp Invoking: GCC C++ Compiler g++ -O3 -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"globals.d" -MT"globals.d" -o"globals.o" "../globals.cpp" Finished building: ../globals.cpp Building file: ../logging.cpp Invoking: GCC C++ Compiler g++ -O3 -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"logging.d" -MT"logging.d" -o"logging.o" "../logging.cpp" Finished building: ../logging.cpp Building file: ../main.cpp Invoking: GCC C++ Compiler g++ -O3 -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"main.d" -MT"main.d" -o"main.o" "../main.cpp" Finished building: ../main.cpp Building file: ../sampling.cpp Invoking: GCC C++ Compiler g++ -O3 -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"sampling.d" -MT"sampling.d" -o"sampling.o" "../sampling.cpp" Finished building: ../sampling.cpp Building file: ../simulation1.cpp Invoking: GCC C++ Compiler g++ -O3 -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"simulation1.d" -MT"simulation1.d" -o"simulation1.o" "../simulation1.cpp" ../globals.h: At global scope: ../globals.h:43: warning: inline function 'double showDecimals(const double&, const int&)' used but never defined Finished building: ../simulation1.cpp Building file: ../test_function.cpp Invoking: GCC C++ Compiler g++ -O3 -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"test_function.d" -MT"test_function.d" -o"test_function.o" "../test_function.cpp" Finished building: ../test_function.cpp Building target: pc2 Invoking: GCC C++ Linker g++ -fopenmp -o"pc2" ./COMPASS.o ./PSA.o ./SAR.o ./constraints.o ./genetic.o ./globals.o ./logging.o ./main.o ./sampling.o ./simulation1.o ./test_function.o ./logging.o: In function `LOG_COMPASS_display_points_MATLAB(int const&, VisitedSet&)': logging.cpp:(.text+0x686): undefined reference to `VisitedSet::getSize()' collect2: ld returned 1 exit status make: *** [pc2] Error 1 make: Leaving directory `/home/djunderw/ncsu/workspace/pc2/release' </pre> <p>Any ideas?</p> <p><strong>[FIXED ISSUE WITH showDecimals() FUNCTION]</strong></p> <p>The file COMPASS.h includes this class template:</p> <pre><code>template&lt;class T&gt; class VisitedSet { public: VisitedSet(const T&amp; soln); int getSize(); void addSolution(const T&amp; soln); void evaluate(); void sample(const int&amp; numNewSolutions, Constraints&amp; space); void CSBiased_generateDistribution(); void constructMPA(Constraints&amp; space); vector&lt;T&gt; vec; double bestValue; int bestIndex; /* used to implement biased coordinate sampling */ double CSBiased_coefficient; vector&lt; vector&lt;double&gt; &gt; lastSampledPoints; vector&lt;int&gt; lastSampledPointsIndex; vector&lt; vector&lt;double&gt; &gt; newSampledPoints; vector&lt;int&gt; newSampledPointsIndex; vector&lt;double&gt; CSBiased_distribution; private: int iteration; int dimension; int SAR(); // simulation allocation rule }; </code></pre> <p>And COMPASS.cpp include the following code:</p> <pre><code>template&lt;class T&gt; int VisitedSet&lt;T&gt;::getSize() { return vec.size(); } </code></pre> <p>The logging.cpp files includes the following code:</p> <pre><code>#include "COMPASS.h" void LOG_COMPASS_display_points_MATLAB(const int&amp; iteration, VisitedSet&lt;Policy&gt;&amp; visited) { cout &lt;&lt; "points{"&lt;&lt;iteration+1&lt;&lt;"} = [\n" &lt;&lt; visited.vec[visited.bestIndex].x[0] &lt;&lt; "\t" &lt;&lt; visited.vec[visited.bestIndex].x[1] &lt;&lt; "\t" &lt;&lt; visited.vec[visited.bestIndex].meanQALY() &lt;&lt; ";" &lt;&lt; endl; for(int i=0; i&lt;visited.getSize(); i++) { if(i != visited.bestIndex) cout &lt;&lt; visited.vec[i].x[0] &lt;&lt; "\t" &lt;&lt; visited.vec[i].x[1] &lt;&lt; "\t" &lt;&lt; visited.vec[i].meanQALY() &lt;&lt; ";" &lt;&lt; endl; } cout &lt;&lt; "];\n"; } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload