From: ma p. <ma...@ya...> - 2006-06-15 16:24:00
|
Hello. I have compiled plplot under windows and all works fine (build + examples) I want to be able to build applications using visual studio 6. I do not manage to link with the plplot.lib (the path in the settings is OK) Any idea? Thanks Marc __________________________________________________ Do You Yahoo!? En finir avec le spam? Yahoo! Mail vous offre la meilleure protection possible contre les messages non sollicités http://mail.yahoo.fr Yahoo! Mail |
From: Jim D. <li...@di...> - 2006-06-16 19:19:49
|
ma poub <ma...@ya...> writes: > Hello. > > I have compiled plplot under windows and all works > fine (build + examples) > I want to be able to build applications using visual > studio 6. I do not manage to link with the plplot.lib > (the path in the settings is OK) > Any idea? > > Thanks > Marc > > First, did you build the library in sys/win32/msdev ? If you did, then you need to add the following (I have VS 2003, so there may be some small differences) 1) You need to make sure the "Runtime Library" settings are compatible, i.e. "Single-threaded" if you are using plplib/plplot.lib or "Single-threaded DLL" if you are using plpdll/plplot.dll 2) Make sure the include directories contain the directories for the header and library. 3) Make sure you plplot.lib or plplot.dll are listed in the "Additional Dependencies." You may have to include gdi32 and user32 (.lib or .dll, as appropriate). If you still cannot get it to work, please let us know what langauge (C, Fortran, C++) you are using. -jd |
From: ma p. <ma...@ya...> - 2006-06-19 07:16:12
|
Thanks for your sugestions. > > First, did you build the library in sys/win32/msdev > ? Yes and examples are working fine > If you did, then you need to add the following (I > have VS 2003, so there > may be some small differences) > > 1) You need to make sure the "Runtime Library" > settings are compatible, > i.e. "Single-threaded" if you are using > plplib/plplot.lib or > "Single-threaded DLL" if you are using > plpdll/plplot.dll tried it, didin't work > 2) Make sure the include directories contain the > directories for the > header and library. OK > 3) Make sure you plplot.lib or plplot.dll are listed > in the "Additional > Dependencies." You may have to include gdi32 and > user32 (.lib or > .dll, as appropriate). I played with the libs. Only go worse. It is only a linking problem. I use MS visual c++ 6 and a use c (not ++) The error I get is at link (simple program with only plinit()) ----------------------- MSVCRT.lib(MSVCRT.dll) : error LNK2005: __isctype already defined in LIBCD.lib(isctype.obj) MSVCRT.lib(MSVCRT.dll) : error LNK2005: _sprintf already defined in LIBCD.lib(sprintf.obj) MSVCRT.lib(MSVCRT.dll) : error LNK2005: _strncpy already defined in LIBCD.lib(strncpy.obj) MSVCRT.lib(MSVCRT.dll) : error LNK2005: _fflush already defined in LIBCD.lib(fflush.obj) MSVCRT.lib(MSVCRT.dll) : error LNK2005: _free already defined in LIBCD.lib(dbgheap.obj) MSVCRT.lib(MSVCRT.dll) : error LNK2005: _malloc already defined in LIBCD.lib(dbgheap.obj) MSVCRT.lib(MSVCRT.dll) : error LNK2005: _calloc already defined in LIBCD.lib(dbgheap.obj) MSVCRT.lib(MSVCRT.dll) : error LNK2005: _realloc already defined in LIBCD.lib(dbgheap.obj) MSVCRT.lib(MSVCRT.dll) : error LNK2005: _fclose already defined in LIBCD.lib(fclose.obj) MSVCRT.lib(MSVCRT.dll) : error LNK2005: _exit already defined in LIBCD.lib(crt0dat.obj) MSVCRT.lib(MSVCRT.dll) : error LNK2005: _tolower already defined in LIBCD.lib(tolower.obj) LINK : warning LNK4098: defaultlib "MSVCRT" conflicts with use of other libs; use /NODEFAULTLIB:library LINK : warning LNK4049: locally defined symbol "_w32_tmpfile" imported Debug/essaiPlplot.exe : fatal error LNK1169: one or more multiply defined symbols found Error executing link.exe. ---------------------- I also tried with -witout __PLDLL_H__ as mentionned in the INSTALL.txt Marc ___________________________________________________________________________ Yahoo! Mail réinvente le mail ! Découvrez le nouveau Yahoo! Mail et son interface révolutionnaire. http://fr.mail.yahoo.com |
From: Arjen M. <arj...@wl...> - 2006-06-19 07:35:45
|
ma poub wrote: >I played with the libs. Only go worse. >It is only a linking problem. > >I use MS visual c++ 6 and a use c (not ++) > >The error I get is at link (simple program with only >plinit()) > >----------------------- >MSVCRT.lib(MSVCRT.dll) : error LNK2005: __isctype >already defined in LIBCD.lib(isctype.obj) >MSVCRT.lib(MSVCRT.dll) : error LNK2005: _sprintf >already defined in LIBCD.lib(sprintf.obj) >MSVCRT.lib(MSVCRT.dll) : error LNK2005: _strncpy >already defined in LIBCD.lib(strncpy.obj) > > > ... >Debug/essaiPlplot.exe : fatal error LNK1169: one or >more multiply defined symbols found >Error executing link.exe. >---------------------- > > This is probably due to mixing debug-enabled object files and non-debug object files in the same program. Try to recompile your code with debugging _disabled_ , so the Release version. (It is a nuisance but the combination of compiler options and linker libraries that will get things wrong is vast ... I may be mistaken and then you would need to use the Debug version for _all_ your sources and libraries) Regards, Arjen |
From: Jim D. <ji...@di...> - 2006-06-19 12:52:45
|
Arjen Markus <arj...@wl...> writes: > This is probably due to mixing debug-enabled object files and > non-debug object files in the same program. Try to recompile > your code with debugging _disabled_ , so the Release version. > If the OP needs debugging, then compile the plplot libraries with debugging by changing the CFG line in the makefiles in plplib and plpdll. > (It is a nuisance but the combination of compiler options and > linker libraries that will get things wrong is vast ... I may be > mistaken and then you would need to use the Debug version > for _all_ your sources and libraries) > Well, it is _theoretically_ possible to mix debug and non-debug code if you use /NODEFAULTLIB and explicitly handle all the libraries. In practice, though, it is too difficult and you are better off going all debug or all release. |
From: ma p. <ma...@ya...> - 2006-06-20 14:22:57
|
switching to release made the number of link problem decrease. With a program with only plinit(), the linker does not find plinit in the .lib. Are there other options that should be taken into account? Marc ___________________________________________________________________________ Yahoo! Mail réinvente le mail ! Découvrez le nouveau Yahoo! Mail et son interface révolutionnaire. http://fr.mail.yahoo.com |
From: Arjen M. <arj...@wl...> - 2006-06-20 19:47:44
|
> switching to release made the number of link problem > decrease. > > With a program with only plinit(), the linker does not > find plinit in the .lib. > > Are there other options that should be taken into > account? > Marc Are you using the DLL version? If so, then the setting of __PLSTUBS_H__ may be wrong. (I remember you fiddled a bit with it) The way forward is: - First try to link with the static version of the library - If that works, check the definition of __PLSTUBS_H__: It should be defined in plstub.h (that is used when compiling for the DLL) - Try linking against the DLL again (Building the DLL version should work, but it does not receive as much attention as the static version) Regards, Arjen |
From: Jim D. <ji...@di...> - 2006-06-22 03:21:06
|
ma poub <ma...@ya...> writes: > switching to release made the number of link problem > decrease. > > With a program with only plinit(), the linker does not > find plinit in the .lib. > > Are there other options that should be taken into > account? > Marc > Since you are using Visual C++ 6, you may have to remove the /Z7 compiler option in the makefiles if you build the debug version. |