Note that there are some explanatory texts on larger screens.

plurals
  1. POlog4cpp gives `unresolved external` errors
    text
    copied!<p>I'm trying to make work the library and run the tests provided with the latest version of log4cpp on Borland Codegear 2007, in which it's included a bpr project for Borland C++ Builder 5, which is meant to be able to build and run the different tests. The problem is that I'm trying to open this project with the 2007 version, which has to carry out a project conversion. I was getting weird 'unresolved external' errors. Then I've tried to build the project myself without converting anything, but got stuck in the same point. </p> <p>I'm trying to run the following test :</p> <pre><code>#include &lt;stdio.h&gt; #include "log4cpp/Portability.hh" #ifdef LOG4CPP_HAVE_UNISTD_H #include &lt;unistd.h&gt; #endif #include &lt;iostream&gt; #include "log4cpp/Category.hh" #include "log4cpp/Appender.hh" #include "log4cpp/FileAppender.hh" #include "log4cpp/OstreamAppender.hh" #ifdef LOG4CPP_HAVE_SYSLOG #include "log4cpp/SyslogAppender.hh" #endif #include "log4cpp/Layout.hh" #include "log4cpp/BasicLayout.hh" #include "log4cpp/Priority.hh" #include "log4cpp/NDC.hh" int main(int argc, char** argv) { log4cpp::Appender* appender; #ifdef LOG4CPP_HAVE_SYSLOG log4cpp::SyslogAppender* syslogAppender; syslogAppender = new log4cpp::SyslogAppender("syslog", "log4cpp"); #else log4cpp::Appender* syslogAppender; syslogAppender = new log4cpp::OstreamAppender("syslogdummy", &amp;std::cout); #endif if (argc &lt; 2) { appender = new log4cpp::OstreamAppender("default", &amp;std::cout); } else { appender = new log4cpp::FileAppender("default", argv[1]); } syslogAppender-&gt;setLayout(new log4cpp::BasicLayout()); appender-&gt;setLayout(new log4cpp::BasicLayout()); log4cpp::Category&amp; root = log4cpp::Category::getRoot(); root.addAppender(syslogAppender); root.setPriority(log4cpp::Priority::ERROR); log4cpp::Category&amp; sub1 = log4cpp::Category::getInstance(std::string("sub1")); sub1.addAppender(appender); log4cpp::Category&amp; sub2 = log4cpp::Category::getInstance(std::string("sub1.sub2")); log4cpp::NDC::push(std::string("ndc1")); std::cout &lt;&lt; " root prio = " &lt;&lt; root.getPriority() &lt;&lt; std::endl; std::cout &lt;&lt; " sub1 prio = " &lt;&lt; sub1.getPriority() &lt;&lt; std::endl; std::cout &lt;&lt; " sub2 prio = " &lt;&lt; sub2.getPriority() &lt;&lt; std::endl; root.error("root error"); root.warn("root warn"); sub1.error("sub1 error"); sub1.warn("sub1 warn"); sub2.error("sub2 error"); sub2.warn("sub2 warn"); sub1.setPriority(log4cpp::Priority::INFO); std::cout &lt;&lt; " root prio = " &lt;&lt; root.getPriority() &lt;&lt; std::endl; std::cout &lt;&lt; " sub1 prio = " &lt;&lt; sub1.getPriority() &lt;&lt; std::endl; std::cout &lt;&lt; " sub2 prio = " &lt;&lt; sub2.getPriority() &lt;&lt; std::endl; std::cout &lt;&lt; "priority info" &lt;&lt; std::endl; root.error("root error"); root.warn("root warn"); sub1.error("sub1 error"); sub1.warn("sub1 warn"); sub2.error("sub2 error"); sub2.warn("sub2 warn"); sub2.warnStream() &lt;&lt; "streamed warn"; sub2 &lt;&lt; log4cpp::Priority::WARN &lt;&lt; "warn2" &lt;&lt; " warn3" &lt;&lt; log4cpp::eol &lt;&lt; " warn4"; { for(int i = 0; i &lt; 10000; i++) { char ndc2[20]; sprintf(ndc2, "i=%d", i); log4cpp::NDC::push(ndc2); sub1.info("%s%d", "i = ", i); if ((i % 10) == 0) { sub1.log(log4cpp::Priority::NOTICE, "reopen log"); if (log4cpp::Appender::reopenAll()) { sub1.info("log reopened"); } else { sub1.warn("could not reopen log"); } } #ifndef WIN32 sleep(1); #endif log4cpp::NDC::pop(); } } return 0; } </code></pre> <p>The errors are all about 'unresolved external', such as:</p> <pre><code>[ILINK32 Error] Error: Unresolved external 'log4cpp::Category::warn(const char *, ...)' referenced from C:\DOCUMENTS AND SETTINGS\MLERMA\MIS DOCUMENTOS\RAD STUDIO\PROJECTS\DEBUG\TESTMAIN.OBJ </code></pre> <p>I'm getting this kind of error for every single call to a log4cpp function, all referring to TESTMAIN.OBJ . </p> <p>Any ideas on this? is there anyone out there who has worked with log4cpp on Borland ?</p>
 

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