[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