[Lemon-user] Using Lemon with CPLEX Concert on Windows with Visual C++ 2008
Alpár Jüttner
alpar at cs.elte.hu
Wed May 18 08:57:25 CEST 2011
Hi,
It's difficult for me to help, as I cannot reproduce your problem. Also,
the error log still looks quite unrelated to LEMON.
The only thing I can suggest is trying to localize the problem somehow.
For example
* First try to compile and link a sample code using LEMON only
* Then, try to compile and link a sample code using CPLEX only
* Finally, if the both are working _using the same config_, then
try using them together.
Regards,
Alpar
> Thanks for the suggestions Alpar. When I used the /NODEFAULTLIB
> (following in the instructions at
> http://msdn.microsoft.com/en-us/library/f1tbxcxh(v=vs.80).aspx)
>
> I get different errors:
>
> 1>------ Build started: Project: tryLemonAlone, Configuration: Release
> Win32 ------
> 1>Compiling...
> 1>main.cpp
> 1>Linking...
> 1>main.obj : error LNK2001: unresolved external symbol
> __invalid_parameter_noinfo
> 1>libcpmt.lib(cout.obj) : error LNK2001: unresolved external symbol
> __invalid_parameter_noinfo
> 1>libcpmt.lib(cerr.obj) : error LNK2001: unresolved external symbol
> __invalid_parameter_noinfo
> 1>libcpmt.lib(_tolower.obj) : error LNK2001: unresolved external
> symbol __calloc_crt
> 1>libcpmt.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol
> __malloc_crt
> 1>C:\Users\luis\Documents\singleStopProblem\tryLemonAlone\Release\tryLemonAlone.exe
> : fatal error LNK1120: 3 unresolved externals
> 1>Build log was saved at
> "file://c:\Users\luis\Documents\tryLemonAlone\tryLemonAlone\Release\BuildLog.htm"
> 1>tryLemonAlone - 6 error(s), 0 warning(s)
> ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
>
> Here's an example of a short piece of code where Concert works with
> lemon and without it, followed by the errors. The errors I've gotten
> this time are different and more numerous, in the previous code, I was
> not actually using any Concert libraries.
>
> I think the problem may be with how I'm trying to use GraphWriter. In
> the code shown below, if I delete the last bit of code where
> GraphWriter is called, the code compiles and runs fine. With the
> GraphWriter code included, I get the following errors:
>
> 1>------ Build started: Project: testSingleStopAGAIN, Configuration:
> Release Win32 ------
> 1>Compiling...
> 1>main.cpp
> 1>Linking...
> 1>LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson already
> defined in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __amsg_exit already defined
> in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __initterm_e already
> defined in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: _exit already defined in
> MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __exit already defined in
> MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __cexit already defined in
> MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(dosmap.obj) : error LNK2005: __errno already defined in
> MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in
> MSVCRTD.lib(cinitexe.obj)
> 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in
> MSVCRTD.lib(cinitexe.obj)
> 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in
> MSVCRTD.lib(cinitexe.obj)
> 1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in
> MSVCRTD.lib(cinitexe.obj)
> 1>LIBCMT.lib(tidtable.obj) : error LNK2005: __encode_pointer already
> defined in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(tidtable.obj) : error LNK2005: __decode_pointer already
> defined in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(hooks.obj) : error LNK2005: "void __cdecl
> terminate(void)" (?terminate@@YAXXZ) already defined in
> MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(winxfltr.obj) : error LNK2005: __XcptFilter already
> defined in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(crt0.obj) : error LNK2005: _mainCRTStartup already
> defined in MSVCRTD.lib(crtexe.obj)
> 1>LIBCMT.lib(errmode.obj) : error LNK2005: ___set_app_type already
> defined in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(mlock.obj) : error LNK2005: __unlock already defined in
> MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(mlock.obj) : error LNK2005: __lock already defined in
> MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(setlocal.obj) : error LNK2005: __configthreadlocale
> already defined in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(setlocal.obj) : error LNK2005: __free_locale already
> defined in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(setlocal.obj) : error LNK2005: __create_locale already
> defined in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(setlocal.obj) : error LNK2005: _setlocale already defined
> in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(ctype.obj) : error LNK2005: ___pctype_func already
> defined in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(initctyp.obj) : error LNK2005: ____mb_cur_max_l_func
> already defined in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(initctyp.obj) : error LNK2005: ____lc_codepage_func
> already defined in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(initctyp.obj) : error LNK2005: ____lc_handle_func already
> defined in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(lconv.obj) : error LNK2005: _localeconv already defined
> in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(atox.obj) : error LNK2005: _atoi already defined in
> MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(xtoas.obj) : error LNK2005: __ui64toa_s already defined
> in MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(getenv.obj) : error LNK2005: _getenv already defined in
> MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(tolower.obj) : error LNK2005: _tolower already defined in
> MSVCRTD.lib(MSVCR90D.dll)
> 1>LIBCMT.lib(strtol.obj) : error LNK2005: _strtol already defined in
> MSVCRTD.lib(MSVCR90D.dll)
> 1>LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of
> other libs; use /NODEFAULTLIB:library
> 1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of
> other libs; use /NODEFAULTLIB:library
> 1>C:\Users\luis\Documents\testSingleStopAGAIN\Release\testSingleStopAGAIN.exe
> : fatal error LNK1169: one or more multiply defined symbols found
> 1>Build log was saved at
> "file://c:\Users\luis\Documents\testSingleStopAGAIN\Release\BuildLog.htm"
> 1>testSingleStopAGAIN - 34 error(s), 2 warning(s)
> ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
>
>
>
>
>
> #include <ilcplex/ilocplex.h>
> #include <ctime>
> #include <sstream>
>
> #include <lemon/list_graph.h>
> #include <lemon/lgf_reader.h>
> #include <lemon/lgf_writer.h>
>
>
> ILOSTLBEGIN
>
> using namespace std;
> using namespace lemon;
>
> int main() {
> IloEnv env;
> return 0;
>
> int nDemand = 12;
> int nVehicles = 6;
> int nDays = 2;
> cout << "hello there " << endl;
> //write the graph file
> ofstream graphFile("g.lgf");
> if(!graphFile) {
> cout << "Cannot open graph file.\n";
> return 1;
> }
>
>
>
> graphFile << "@nodes" << endl << "label" << endl;
>
> for(int i = 0; i < nDemand+nVehicles; i++) {
> graphFile << i << endl;
> }
> graphFile << "@edges" << endl << endl;
> graphFile << " label capacity" << endl;
> int m = 0;
> for(int i = 0; i < nDemand; i++) {
> for(int k = 0; k < nVehicles; k++) {
> m++;
> graphFile << i << " " << k+nDemand << " " << m << " " << "
> " << 1 << endl;
> }
> }
> graphFile.close();
>
> ListGraph g;
> ListGraph::EdgeMap<int> weight(g);
> ListGraph::NodeMap<int> available(g);
> ListGraph::NodeMap<int> assigned(g);
>
>
> try {
> GraphReader<ListGraph>(g, "g.lgf").
> edgeMap("capacity", weight).
> run();
> } catch (Exception& error) { // check if there was any error
> std::cerr << "Error: " << error.what() << std::endl;
> return -1;
> }
>
> try {
> GraphWriter<ListGraph>(g, cout).
> edgeMap("capacity", weight).
> run();
> } catch (Exception& error) { // check if there was any error
> std::cerr << "Error: " << error.what() << std::endl;
> return -1;
> }
>
> }
>
>
>
>
>
>
>
>
>
>
>
>
> On Sun, May 15, 2011 at 3:52 AM, Alpár Jüttner <alpar at cs.elte.hu> wrote:
> > Hi,
> >
> >> I'm trying to use Lemon and CPLEX Concert in the same code. I'm
> >> running into linker problems. Concert has a number of settings in its
> >> installation instructions, and after adding and removing them one by
> >> one the culprit seems to be setting the runtime library to
> >> multi-threaded (/MT).
> >
> > I do not believe this problem has anything to do with LEMON.
> > Also, the conflicting libs in the error message are unrelated to LEMON.
> >
> > Can you show an example code using CPLEX Concert and MT which compiles
> > and links without LEMON, but not with it?
> >
> > Regards,
> > Alpar
> >
> > P.S. Btw, have you tried using the compiler option /NODEFAULTLIB:library
> > as it is suggested by the error log you sent?
> >
> >> Below are the linker errors I'm getting, and the code that gives me
> >> these errors when I try to link. Without the the change of runtime
> >> library to multi-threaded, the code compiles and runs correctly.
> >>
> >> Does anyone know what settings I should be using to use CPLEX together
> >> with Lemon?
> >>
> >> Thank you,
> >>
> >> Luis de la Torre
> >>
> >>
> >> 1>------ Build started: Project: tryLemonAlone, Configuration: Release
> >> Win32 ------
> >> 1>Compiling...
> >> 1>main.cpp
> >> 1>Linking...
> >> 1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: __thiscall
> >> type_info::type_info(class type_info const &)"
> >> (??0type_info@@AAE at ABV0@@Z) already defined in LIBCMT.lib(typinfo.obj)
> >> 1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info
> >> & __thiscall type_info::operator=(class type_info const &)"
> >> (??4type_info@@AAEAAV0 at ABV0@@Z) already defined in
> >> LIBCMT.lib(typinfo.obj)
> >> 1>LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of
> >> other libs; use /NODEFAULTLIB:library
> >> 1>C:\Users\luis\Documents\tryLemonAlone\Release\tryLemonAlone.exe :
> >> fatal error LNK1169: one or more multiply defined symbols found
> >> 1>Build log was saved at
> >> "file://c:\Users\luis\Documents\tryLemonAlone\tryLemonAlone\Release\BuildLog.htm"
> >> 1>tryLemonAlone - 3 error(s), 1 warning(s)
> >> ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
> >>
> >>
> >>
> >>
> >> This tiny piece of code:
> >>
> >> #include <iostream>
> >> #include <lemon/list_graph.h>
> >> #include <lemon/lgf_reader.h>
> >> #include <lemon/lgf_writer.h>
> >>
> >> using namespace lemon;
> >> using namespace std;
> >>
> >> int main() {
> >> int nDemand = 12;
> >> int nVehicles = 6;
> >> int nDays = 2;
> >> cout << "hello there " << endl;
> >> //write the graph file
> >> ofstream graphFile("g.lgf");
> >> if(!graphFile) {
> >> cout << "Cannot open graph file.\n";
> >> return 1;
> >> }
> >> graphFile << "@nodes" << endl << "label" << endl;
> >>
> >> for(int i = 0; i < nDemand+nVehicles; i++) {
> >> graphFile << i << endl;
> >> }
> >> graphFile << "@edges" << endl << endl;
> >> graphFile << " label capacity" << endl;
> >> int m = 0;
> >> for(int i = 0; i < nDemand; i++) {
> >> for(int k = 0; k < nVehicles; k++) {
> >> m++;
> >> graphFile << i << " " << k+nDemand << " " << m << " " << "
> >> " << 1 << endl;
> >> }
> >> }
> >> graphFile.close();
> >>
> >> ListGraph g;
> >> ListGraph::EdgeMap<int> weight(g);
> >> ListGraph::NodeMap<int> available(g);
> >> ListGraph::NodeMap<int> assigned(g);
> >>
> >> try {
> >> GraphReader<ListGraph>(g, "g.lgf").
> >> edgeMap("capacity", weight).
> >> run();
> >> } catch (Exception& error) { // check if there was any error
> >> std::cerr << "Error: " << error.what() << std::endl;
> >> return -1;
> >> }
> >> try {
> >> GraphWriter<ListGraph>(g, std::cout).
> >> edgeMap("capacity", weight).
> >> run();
> >> } catch (Exception& error) { // check if there was any error
> >> std::cerr << "Error: " << error.what() << std::endl;
> >> return -1;
> >> }
> >>
> >> for(ListGraph::NodeIt it(g); it != INVALID; ++it) {
> >> cout << g.id(it) << endl;
> >> }
> >>
> >> return 0;
> >> }
> >> _______________________________________________
> >> Lemon-user mailing list
> >> Lemon-user at lemon.cs.elte.hu
> >> http://lemon.cs.elte.hu/mailman/listinfo/lemon-user
> >>
> >
> >
> >
>
More information about the Lemon-user
mailing list