Simultaneous 32 and 64 bit development on the same machine
Lasse Laursen
lasse at lasselaursen.com
Tue Jul 29 02:30:56 PDT 2014
Hello again,
Apparently, I am a retard.
My PATH system variable most certainly included a path to the x86 bin
directory. So how to fix this annoyance? Well - my solution was as
follows. First, remove the path from the PATH system variable. Now
nothing works of course. So go into the project properties in Visual
Studio. Now then...
Configuration Properties >> VC++ Directories >> Executable Directories
looks really promising. But will do NOTHING to help you!!! Mwuahahaha.
That's apparently where Visual Studio looks when it's linking and
compiling and other executable stuff. No, instead go to...
Configuration Properties >> Debugging >> Environment
and add something along the lines of
PATH=$(SDKS_Dir)\gstreamer\1.0\x86\bin;%PATH%
Bam... You have now added this dynamically to your PATH variable before
running your program. And there was much rejoicing. Of course, if you
ever want to then also run your program outside of the confines of
Visual Studio, you may want to create a small batch file that sets this
PATH each time before you run your program. Then you will have achieved
what I set out to do. Run both a 32bit and 64bit version of your App on
the same OS.
Hope this helps someone!
Lasse
On 28-07-2014 15:42, Lasse Laursen wrote:
> Dear Josh, Ian and Andoni,
>
> Apologies for the long silence, I had to table this issue for a while,
> but I am back now - to finish this once and for all.
>
> Josh - the use of GST_PLUGIN_PATH_1_0 or GST_PLUGIN_PATH is moot,
> isn't it? I mean, sure I'll switch to GST_PLUGIN_PATH_1_0 if the other
> is being depricated, but it doesn't really matter in this context,
> does it?
>
> Ian - I think any means to develop for either a 32 or 64 bit release
> is game. But why go to the trouble of making a virtual machine when
> it's perfectly possible to run both 32 and 64 bit versions on the same
> OS? I'm sure the virtual machine could perhaps provide a better
> testing platform, but all I aim to do is have them both run. Exact
> behavior is less of a concern, currently.
>
> Andoni - I have both the x86 and x64 versions installed, but I am
> still running into a lot of trouble getting the x64 version of my app
> using gstreamer to execute properly. Using the dependancy walker, I've
> found out that it's still grabbing the DLLs from the 32 bit version of
> gStreamer :( And I am currently completely at a loss as to why. I'm
> literally clueless. My environment variables are as follows:
>
> GSTREAMER_1_0_ROOT_X86 - D:\SDKS\gstreamer\1.0\x86
> GSTREAMER_1_0_ROOT_X86_64 - D:\SDKS\gstreamer\1.0\x86_64
> GST_PLUGIN_PATH - D:\SDKS\gstreamer\1.0\x86\lib
>
> The PATH variable has nothing in it relating to gStreamer. So looking
> at these environment variables I thought 'aha! Obviously it's the
> GST_PLUGIN_PATH! I read that a colon separated list was ok, and tried
> this:
>
> D:\SDKS\gstreamer\1.0\x86\lib;D:\SDKS\gstreamer\1.0\x86_64\lib
>
> I know that's technically semi-colon separated, but no-matter. Didn't
> work. Now I've just changed it to the following:
>
> D:\SDKS\gstreamer\1.0\x86_64\lib
>
> Same issue. The 64-bit executable still much prefers the 32bit
> gestreamer DLLs. I'll come clean and say I have 0 understanding as to
> how it currently picks its DLLs. Hopefully some kind soul will clue me
> in, because as it stands now, with the changes made, my 32bit exe
> works great, yet my 64bit version crashes horribly.
>
> Thanks,
> Lasse
>
> On 11-07-2014 23:39, Andoni Morales wrote:
>>
>>
>>
>> 2014-07-11 9:46 GMT+02:00 Lasse Laursen <gazoo at 42.dk
>> <mailto:gazoo at 42.dk>>:
>>
>> Dear GStreamer-devel,
>>
>> I've recently found a need to start compiling a 64-bit version of
>> my GStreamer app. I'd prefer not having to give up my 32-bit
>> version though, so I set about to have my cake and eat it too.
>>
>> But I'm left with a few questions, to which I may, or may not
>> already have the answers. I could do with some input regardless.
>>
>> So the two big challenges I see that need resolving are as follows:
>>
>> 1. GST_PLUGIN_PATH defined as an environment variable. This can -
>> of course - only point to either the 32 or 64 bit collection of
>> plug-ins. My assumption is that plug-ins are also compiled in
>> either a 32 or 64 bit fashion and should be used with the
>> respective version of the GStreamer library. An earlier message
>> on this mailing list indicated that Gstreamer automatically scans
>> this place:
>>
>> DIR/lib/gstreamer-1.0/ where DIR is
>>
>> g_win32_get_package_installation_directory_of_module()
>>
>> here I'm already a bit curious as whether that changes the
>> directory it points at if you're running a 64-bit version of an
>> application dynamically linked with 64-bit GStreamer...?
>>
>> Another helpful user pointed out the option of using 'putenv' to
>> modify the environment variables during runtime, which would then
>> fairly easily let me point the GST_PLUGIN_PATH to the right
>> directory.
>>
>> 2. The PATH environment variable has the same issue - pointing
>> only to the 32 or 64 binaries. I'm guessing 'putenv' could solve
>> this too, unless someone else has some other cool and easier ways
>> to fix this?
>>
>> ------------------
>>
>> With both these approaches one thing I worry about it having to
>> remove the default environment variables, as using GStreamers
>> executables separately is quite useful for testing a lot of
>> stuff. But having to continuously add and remove them is quite
>> the hassle. Apart from creating a custom batch file that launches
>> a cmd window and adds these env. variables, I'm also a little at
>> a loss as to how to solve this...
>>
>> Any and all thoughts/comments are welcome. I will test this soon,
>> but I am keen to hear existing experience!
>>
>>
>> Hi Lasse,
>>
>> On Windows GStreamer can be installed in parallel for both
>> architectures and you can work with both archs without having to do
>> anything else on your side.
>> Your x64 application will link against the gstreamer library in
>> c:\gstreamer\1.0\x86_64\bin and therefore loads deps and plugins from
>> this prefix, while the x86 one will link against the gstreamer
>> library in c:\gstreamer\1.0\x86\bin and use this different prefix.
>> And in case you need to set PATH the installer adds 2 env variables
>> that you can use GSTREAMER_1_0_ROOT_X86 and GSTREAMER_1_0_ROOT_X86_64
>>
>> Cheers,
>> Andoni
>>
>> Cheers,
>> Andoni
>>
>>
>> Regards,
>> Lasse
>>
>> --
>> Lasse Farnung Laursen
>> Post.doc at the University of Tokyo
>> www.lasselaursen.com <http://www.lasselaursen.com>
>> FB: lasse.laursen <https://www.facebook.com/lasse.laursen>
>> Twitter: @PMP_J <https://twitter.com/PMP_J>
>>
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> <mailto:gstreamer-devel at lists.freedesktop.org>
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>>
>>
>>
>> --
>> Andoni Morales Alastruey
>>
>> LongoMatch:The Digital Coach
>> http://www.longomatch.ylatuya.es
>>
>>
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
> --
> Lasse Farnung Laursen
> Post.doc at the University of Tokyo
> www.lasselaursen.com <http://www.lasselaursen.com>
> FB: lasse.laursen <https://www.facebook.com/lasse.laursen>
> Twitter: @PMP_J <https://twitter.com/PMP_J>
>
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
--
Lasse Farnung Laursen
Post.doc at the University of Tokyo
www.lasselaursen.com <http://www.lasselaursen.com>
FB: lasse.laursen <https://www.facebook.com/lasse.laursen>
Twitter: @PMP_J <https://twitter.com/PMP_J>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20140729/fa1213b3/attachment-0001.html>
More information about the gstreamer-devel
mailing list