[Scons-users] MS Visual Studio Install tries to find a not-existing file

Francis Bolduc fbolduc at gmail.com
Sun Aug 19 16:34:38 EDT 2012


try doing the following before your call to SharedLibrary:

envlua.AppendUnique(CPPDEFINES=['LUA_BUILD_AS_DLL'])

This will enable this Microsoft-only, non-standard, non-portable
attribute known as "__declspec(dllimport/dllexport)" in the LUA source
code.

Welcome to Microsoft Windows.

Forget about shared libraries. Here symbols have to be explicitly "exported".

You really ought to read a lot. Developing software on Microsoft
Windows is orders of magnitude harder than on unix systems.

--
Francis Bolduc, B.Sc.


On Sun, Aug 19, 2012 at 11:20 AM, Matthieu Brucher
<matthieu.brucher at gmail.com> wrote:

> No, the .lib is created by the compiler, but you have to specify which

> function can be accessible by the program and exported:

> http://msdn.microsoft.com/en-us/library/3y1sfaz2.aspx

>

>

> Cheers,

>

> Matthieu

>

> 2012/8/19 Kraus Philipp <philipp.kraus at flashpixx.de>

>>

>> Hi,

>>

>> yes I'm developing primary under unix systems, so there exists a *.so

>> or/and *.a file and they are independed.

>> I will read the chapter, but how can I realize this in / with scons? I

>> would like to link the DLL in my program

>>

>> Should I create a env.Library first and pass the result to

>> env.SharedLibrary and this output to the env.Install?

>>

>> Thanks

>>

>> Phil

>>

>>

>> Am 19.08.2012 um 16:25 schrieb Matthieu Brucher:

>>

>> Hi,

>>

>> That's because the build process should return 2 files, the dll and the

>> lib file. The first is the one you deploy, but the second is the one that is

>> needed to link an application. Linux doesn't define something like that, I

>> suggest you read the MSDN chapter on shared libraries and exported

>> functions/classes/methods/...

>>

>> Matthieu

>>

>> 2012/8/19 Philipp Kraus <philipp.kraus at flashpixx.de>

>>>

>>> Hi Matthieu,

>>>

>>>

>>> thanks for your answer, but I don't understand the answer.

>>>

>>> I call scons in the Visual Studio CommandLine and build a shared library

>>> with env.SharedLibrary

>>>

>>> The result of this call is passed to env.Install and if the scons script

>>> runs, the error is shown after building.

>>>

>>>

>>> I found in my build directory the *.dll file, so I think the

>>> env.SharedLibrary builder works. But the "copy-process"

>>>

>>> breaks with the error, because the env.Install call try to copy two files

>>> *.dll and *.lib, but the *.lib file does not

>>>

>>> exist. My problem is, to install / copy the builded library into my

>>> installation directory.

>>>

>>>

>>> Phil

>>>

>>>

>>> On 2012-08-19 14:53:24 +0200, Matthieu Brucher said:

>>>

>>>

>>> Hi Philip,

>>>

>>>

>>> The .lib file is not only the name of the static library, for a shared

>>> library it contains everything needed to link against the dll. It is built

>>> only if you export something. If you don't export functions, it means that

>>> you won't be able to link against it, only load it with something like

>>> "LoadLibrary".

>>>

>>>

>>> Cheers,

>>>

>>>

>>> Matthieu

>>>

>>>

>>> 2012/8/19 Kraus Philipp <philipp.kraus at flashpixx.de>

>>>

>>> Hello,

>>>

>>>

>>> I compile under MS Visual Studio 2010 Express the LUA library.

>>>

>>>

>>> lib = envlua.Library(target="lua", source=libsrc)

>>>

>>> envlua.Install( "targetpath", lib )

>>>

>>>

>>> In this case, VS builds a *.lib file and installs it within the target

>>> directory.

>>>

>>> So if I switch to a shared library:

>>>

>>>

>>> lib = envlua.SharedLibrary(target="lua", source=libsrc)

>>>

>>> envlua.Install( "targetpath", lib )

>>>

>>>

>>> The Install command shows:

>>>

>>> scons: *** [library\build\LUA\5.2.1\lib\lua.lib] library\lua.lib: No such

>>> file or directory

>>>

>>>

>>> It is a correct error message, but no lua.lib is build (static build), so

>>> the Install command

>>>

>>> searches the static and the dynamic library. It seems, that the Install

>>> command searches

>>>

>>> on dynamic build also a static library.

>>>

>>>

>>> I would like to build only the DLL not the static version and would like

>>> to install the file

>>>

>>> in the target place

>>>

>>>

>>> How can I solve this problem?

>>>

>>>

>>> Thanks

>>>

>>>

>>> Phil

>>>

>>>

>>> _______________________________________________

>>>

>>> Scons-users mailing list

>>>

>>> Scons-users at scons.org

>>>

>>> http://four.pairlist.net/mailman/listinfo/scons-users

>>>

>>>

>>>

>>>

>>> --

>>>

>>> Information System Engineer, Ph.D.

>>>

>>> Blog: http://matt.eifelle.com

>>>

>>> LinkedIn: http://www.linkedin.com/in/matthieubrucher

>>>

>>> Music band: http://liliejay.com/

>>>

>>>

>>> _______________________________________________

>>>

>>> Scons-users mailing list

>>>

>>> Scons-users at scons.org

>>>

>>> http://four.pairlist.net/mailman/listinfo/scons-users

>>>

>>>

>>>

>>> _______________________________________________

>>> Scons-users mailing list

>>> Scons-users at scons.org

>>> http://four.pairlist.net/mailman/listinfo/scons-users

>>>

>>

>>

>>

>> --

>> Information System Engineer, Ph.D.

>> Blog: http://matt.eifelle.com

>> LinkedIn: http://www.linkedin.com/in/matthieubrucher

>> Music band: http://liliejay.com/

>>

>> _______________________________________________

>> Scons-users mailing list

>> Scons-users at scons.org

>> http://four.pairlist.net/mailman/listinfo/scons-users

>>

>>

>>

>> _______________________________________________

>> Scons-users mailing list

>> Scons-users at scons.org

>> http://four.pairlist.net/mailman/listinfo/scons-users

>>

>

>

>

> --

> Information System Engineer, Ph.D.

> Blog: http://matt.eifelle.com

> LinkedIn: http://www.linkedin.com/in/matthieubrucher

> Music band: http://liliejay.com/

>

>

> _______________________________________________

> Scons-users mailing list

> Scons-users at scons.org

> http://four.pairlist.net/mailman/listinfo/scons-users

>



More information about the Scons-users mailing list