Pulse-Eight CEC +

Questions and comments specific to a particular plugin should go here.
RichardH
Posts: 32
Joined: Tue Dec 16, 2014 12:59 pm

Re: Pulse-Eight CEC +

Post by RichardH » Sun Dec 01, 2019 4:04 pm

Problem solved. I found out that _cec.pyd also depends on MSVCP120.dll and MSVCR120.dll. These are installed with the Visual C++ 2013 redistributables.
Evidently they got uninstalled somewhere along the way. Just in case someone else encounters the same problem, perhaps it would be useful to put the 2013 redistributables on the first page alongside the 2015 ones.
Wonderful what a clear head can do!
Keep up the good work.

RichardH
Posts: 32
Joined: Tue Dec 16, 2014 12:59 pm

Re: Pulse-Eight CEC +

Post by RichardH » Sun Dec 01, 2019 6:14 pm

Just wondering - what toolset (VS version) did you use for building the dll?

User avatar
kgschlosser
Site Admin
Posts: 5027
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: Pulse-Eight CEC +

Post by kgschlosser » Sun Dec 01, 2019 11:33 pm

I didn't build the DLL it is built by pulse eight.

The funny thing is that they do not include the 2013 redists with their installer only 2015. have you tried it with installing the 2 redists attached to the first post??
there are installation instructions on the first post stating that those redists are a requirement.
If you like the work I have been doing then feel free to Image

User avatar
kgschlosser
Site Admin
Posts: 5027
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: Pulse-Eight CEC +

Post by kgschlosser » Sun Dec 01, 2019 11:36 pm

so this is what I need to know.

will it run with only the 2013 redists?
I have 2015, -2019 installed and it runs. no 2013. so that is a strange thing that it is not working for you unless you have the 2013 ones installed.
If you like the work I have been doing then feel free to Image

RichardH
Posts: 32
Joined: Tue Dec 16, 2014 12:59 pm

Re: Pulse-Eight CEC +

Post by RichardH » Mon Dec 02, 2019 9:35 am

A very good question. The plugin still works like a charm for me after I uninstalled the 2015 redistributables. They are simply not needed! I had understood that the dll was a special build for EventGhost, and not available from Pulse-Eight. I assumed, wrongly, that you had built it youserlf.

I have a theory as to what is happening.

According to Pulse-Eight it is possible to build libcec etc. using either the v120 toolset (Visual Studio 2013 and later) or the v140 toolset (Visual Studio 2015). I think what is currently available on the Pulse-Eight site is built with v140, so they include the 2015 redistributables accordingly. I suspect whoever built the special dll for EventGhost used the v120 toolset (or did not change the project files to specify v140). That would explain your plugins' dependency on MSVCP120.dll and MSVCR120.dll (this applies to both 0.4.7b and 0.4.9b plugin versions).

Why does the plugin work for some people? In the cases where it works, if you search under %windir% you will find the two MSVC?120 dlls in there somewhere because something else happened to install them at some time (according to my theory).

Does this sound like it makes sense to you?

User avatar
kgschlosser
Site Admin
Posts: 5027
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: Pulse-Eight CEC +

Post by kgschlosser » Mon Dec 02, 2019 11:12 am

This is a whole built packaged up installer. It did not come just as a dll. It was built by the lead programmer of libcec... idk

But that does not answer the question as to why I am running the same dll file and only have 2015 installed while you only have 2013 installed and it is working..

The only thing I can think of is possibly this.. I do not have a single 2015 install it is a single redist that covers x86 and x84 2015, 2017 and 2019. there may be something special with it. Well actually there has to be because each of the 6 redists are around 14 MB each and the redist that has all 6 put together is i believe 27mb. so there is something special with it..

I am going to go and search to see if i can locate the dll files that are needed to run cec.. My system is a fresh brand new install of windows.. maybe a month old. I have not installed the 2013 redist since i did a clean install on a new drive. so no possibilities of anything lingering about.
If you like the work I have been doing then feel free to Image

User avatar
kgschlosser
Site Admin
Posts: 5027
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: Pulse-Eight CEC +

Post by kgschlosser » Mon Dec 02, 2019 11:15 am

and would you look at that. I have those files in my system32 folder.. i wonder where they came from. some application must have installed them.

I am going to uninstall the redist to see if they disappear.. then we know that the 2015 to 2019 redist also contains pieces of the 2013 redit
If you like the work I have been doing then feel free to Image

RichardH
Posts: 32
Joined: Tue Dec 16, 2014 12:59 pm

Re: Pulse-Eight CEC +

Post by RichardH » Mon Dec 02, 2019 12:37 pm

There could be a good reason why the dll was built the way it was. What does the developer say?

Otherwise, up to and including VS2013 the redistributables were all standalone, i.e. multiple different versions could be required and can exist side-by-side. From VS2015 the redistributables are universal. Hence the latest is 2015-2019.This latest version does not contain anything prior to VS2015, so the earlier ones are still needed.

Unless there is a good reason not to, I would suggest having the plugin package rebuilt with toolset vs140 and bundle with the 2015-2019 redists. Else replace the (actually out of date) 2015 redists on page 1 with 2013.

Interested to hear what you find out.

User avatar
kgschlosser
Site Admin
Posts: 5027
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: Pulse-Eight CEC +

Post by kgschlosser » Mon Dec 02, 2019 6:17 pm

how about this.. I am going to remove the redists and in the instructions inform the user of the requirement of those 2 files. and state that they can be located in the 2013 visual c++ redists if they are not able to locate the files in their windows\system32 folder.
If you like the work I have been doing then feel free to Image

RichardH
Posts: 32
Joined: Tue Dec 16, 2014 12:59 pm

Re: Pulse-Eight CEC +

Post by RichardH » Tue Dec 03, 2019 7:45 am

Yes, definitely. You need mention only the redistributables (and only the VC++ 2013 ones), and maybe provide a link to the relevant Microsoft download location. No need potentially to confuse users with other details, such as suggesting they should search system folders. Users can check through control panel if the redists are already present if they want, and installing them does no harm anyway.

However, instead of relying on ancient redists, I still think it might would be worth considering an upgrade of the PulseEIghtPlus plugin by building with the v140 toolset. If only because as it stands it is unnecessarily out of sync with the latest Pulse-Eight libcec (4.0.3). Interested to hear what you and the developer think.

RichardH
Posts: 32
Joined: Tue Dec 16, 2014 12:59 pm

Re: Pulse-Eight CEC +

Post by RichardH » Wed Dec 04, 2019 3:57 am

... either way, only the x86 versions of the redists are needed for this plugin - you can remove reference to x64.

jachin99
Experienced User
Posts: 605
Joined: Sat Feb 13, 2016 8:39 pm

Re: Pulse-Eight CEC +

Post by jachin99 » Fri Dec 06, 2019 2:10 am

It's not specific to this but I have entirely removed visual c packages after installing software and I still do about half of the time. At times the program won't run without it and others a specific component I don't need might break. If my PC is acting a little sloggish those are one of the first things I go for.

RichardH
Posts: 32
Joined: Tue Dec 16, 2014 12:59 pm

Re: Pulse-Eight CEC +

Post by RichardH » Fri Dec 06, 2019 4:39 pm

Just to be clear, the above several messages have been about the need to have the correct Visual C++ package installed. Although I did mention that I removed the ones listed on page 1 of this thread, that was temporary, experimental, and for the sole purpose of confirming the error in the instructions on page 1. I did not mean to suggest anyone should uninstall those or any other redistributable packages without first being certain they are not in use elsewhere. Removing such packages at random, or routinely, is generally a bad idea, in my opinion. The problem discussed here has been solved above, and, pending a correction to page 1, can be considered closed as far as I am concerned.

User avatar
kgschlosser
Site Admin
Posts: 5027
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: Pulse-Eight CEC +

Post by kgschlosser » Fri Dec 06, 2019 10:49 pm

we are still not 100% on what the issue is exactly.

I am going to use DLL walker and see what other DLL's the thing loads.

I find it strange that the installer that was compiled by libcec would come with the 2015 redists when the 2013 redists are needed. that portion is typically automated by the compiler when the whole thing gets built and assembled into the installer. So I am going to report this issue to their lead programmer. But I need to make sure that is 100% the issue.

This is a sneaky kind of a problem and one I want to make sure is actually a problem then go from there. there are so many versions and updates to redists it could be that something is out of sorts in terms of possibly a redist update. who knows. I need to tear apart the DLL so I can see exactly what it is trying to load.
If you like the work I have been doing then feel free to Image

RichardH
Posts: 32
Joined: Tue Dec 16, 2014 12:59 pm

Re: Pulse-Eight CEC +

Post by RichardH » Sat Dec 07, 2019 8:02 am

When you walk the dependencies what you will find is as follows.

On a 64-bit system, among a few other Windows system dlls, the PulseEightPlus plugin cec.dll loads C:\Windows\SysWOW64\MSVCP120.dll and C:\Windows\SysWOW64\MSVCR120.dll. These are files from the Visual C++ 2013 x86 redistributable package.

Previously you reported that on your own system you found dlls with the same names in C:\Windows\System32. On a 64-bit system, these are from the Visual C++ 2013 x64 redistributable package. These are not actually being loaded, as you can confirm. (If you had looked further you would have also found the above x86 dlls.)

Out of curiosity I downloaded libcec 4.0.2 from the Pulse-Eight site to see what is loaded by the cec.dll that is in there . It is different: C:\Windows\SysWOW64\MSVCP140.dll, among others. This therefore relies on the Visual C++ 2015 x86 redistributable package (or later).

Clearly the PulseEightPlus cec.dll is a special build that differs from counterparts available directly from Pulse-Eight. They depend on different redistributable packages. Whether this difference was intentional is unclear to me. You would have to ask the developer. In any case, I would not assume that the redistributables were added automatically to the installer package. It may seem strange, but it is what it is.

Let me know if anything is still unclear.

Post Reply