Hi, all Thanks for Piotr's comment on my GSOC ideas. In order to have a good knowledge of functions from tr2 namespace, I had made a test and written some functions' implementation.
However, I had an issue with msvcp test's design when I need to free library of msvcp90 and load msvcp110. 619 static HMODULE msvcr, msvcp; 620 #define SETNOFAIL(x,y) x = (void*)GetProcAddress(msvcp,y) 621 #define SET(x,y) do { SETNOFAIL(x,y); ok(x != NULL, "Export '%s' not found\ n", y); } while(0) In my patch, I use a hmodule variable named msvcp90 to save msvcp90 hmodule and then reuse msvcp to save msvcp110. As far as I am concerned, the name msvcp90 or msvcp90_saver is not good enough. Could you give it a good name?
And the other method I came up with is undefining SETNOFAIL and SET and using msvcp110 to define it again, which I think is ugly. By the way, my crosstest on all the testbots[1] show that msvcp110.dll or msvcrt110.dll not installed. It seems testbot doesn't install msvcp110.
I will be grateful for any advice you can provide.
[1]: https://testbot.winehq.org/JobDetails.pl?Key=12146&log_110=1#k110
Am 15.03.2015 um 09:50 schrieb YongHao Hu:
Hi, all Thanks for Piotr's comment on my GSOC ideas. In order to have a good knowledge of functions from tr2 namespace, I had made a test and written some functions' implementation.
However, I had an issue with msvcp test's design when I need to free library of msvcp90 and load msvcp110. 619 static HMODULE msvcr, msvcp; 620 #define SETNOFAIL(x,y) x = (void*)GetProcAddress(msvcp,y) 621 #define SET(x,y) do { SETNOFAIL(x,y); ok(x != NULL, "Export '%s' not found\ n", y); } while(0) In my patch, I use a hmodule variable named msvcp90 to save msvcp90 hmodule and then reuse msvcp to save msvcp110. As far as I am concerned, the name msvcp90 or msvcp90_saver is not good enough. Could you give it a good name?
Hi, i'd simply add variables named e.g. msvcp110
And the other method I came up with is undefining SETNOFAIL and SET and using msvcp110 to define it again, which I think is ugly. By the way, my crosstest on all the testbots[1] show that msvcp110.dll or msvcrt110.dll not installed. It seems testbot doesn't install msvcp110.
Are you sure about msvcrt110 or do you mean msvcr110 (notice the t)
Hi, If just add varibables name msvcp110, I will need to add another #define like
#define ANOTHER_SETNOFAIL(x,y) x = (void*)GetProcAddress(msvcp110,y)
Good point. I just copy the test code from origin ios.c and what you mentioned was a typo.
629 msvcr = LoadLibraryA("msvcr90.dll"); 630 msvcp = LoadLibraryA("msvcp90.dll"); 631 if(!msvcr || !msvcp) { 632 win_skip("msvcp90.dll or msvcrt90.dll not installed\n"); 633 return FALSE; 634 }
It should be msvcrt90.dll not installed. So in my patch it should be msvcr110. Thank you. : )
On 2015年03月15日 18:38, André Hentschel wrote:
Am 15.03.2015 um 09:50 schrieb YongHao Hu:
Hi, all Thanks for Piotr's comment on my GSOC ideas. In order to have a good knowledge of functions from tr2 namespace, I had made a test and written some functions' implementation.
However, I had an issue with msvcp test's design when I need to free library of msvcp90 and load msvcp110. 619 static HMODULE msvcr, msvcp; 620 #define SETNOFAIL(x,y) x = (void*)GetProcAddress(msvcp,y) 621 #define SET(x,y) do { SETNOFAIL(x,y); ok(x != NULL, "Export '%s' not found\ n", y); } while(0) In my patch, I use a hmodule variable named msvcp90 to save msvcp90 hmodule and then reuse msvcp to save msvcp110. As far as I am concerned, the name msvcp90 or msvcp90_saver is not good enough. Could you give it a good name?
Hi, i'd simply add variables named e.g. msvcp110
And the other method I came up with is undefining SETNOFAIL and SET and using msvcp110 to define it again, which I think is ugly. By the way, my crosstest on all the testbots[1] show that msvcp110.dll or msvcrt110.dll not installed. It seems testbot doesn't install msvcp110.
Are you sure about msvcrt110 or do you mean msvcr110 (notice the t)
On 15.03.2015 11:50, YongHao Hu wrote:
Hi, all Thanks for Piotr's comment on my GSOC ideas. In order to have a good knowledge of functions from tr2 namespace, I had made a test and written some functions' implementation.
However, I had an issue with msvcp test's design when I need to free library of msvcp90 and load msvcp110. 619 static HMODULE msvcr, msvcp; 620 #define SETNOFAIL(x,y) x = (void*)GetProcAddress(msvcp,y) 621 #define SET(x,y) do { SETNOFAIL(x,y); ok(x != NULL, "Export '%s' not found\ n", y); } while(0) In my patch, I use a hmodule variable named msvcp90 to save msvcp90 hmodule and then reuse msvcp to save msvcp110. As far as I am concerned, the name msvcp90 or msvcp90_saver is not good enough. Could you give it a good name?
And the other method I came up with is undefining SETNOFAIL and SET and using msvcp110 to define it again, which I think is ugly. By the way, my crosstest on all the testbots[1] show that msvcp110.dll or msvcrt110.dll not installed. It seems testbot doesn't install msvcp110.
I will be grateful for any advice you can provide.
This class is only present in 11.0 and 12.0 libs, right? Why not add such tests to msvcp110/tests?
On 2015年03月15日 19:45, Nikolay Sivov wrote:
This class is only present in 11.0 and 12.0 libs, right?
Yes, it was only present in 11.0 and 12.0 libs.
Why not add such tests to msvcp110/tests?
Yeah, I just thought about it when I made the test, but there is no such an example in msvcp/msvcrt. What's more, msvcp110 reuses msvcp90's code. For these reasons, I took adding msvcp110 test to msvcp90 into account. However, I don't have a good idea which one is better. How do you think about it ? I will be grateful for any advice you can provide.
On 03/16/15 01:13, YongHao Hu wrote:
On 2015年03月15日 19:45, Nikolay Sivov wrote:
This class is only present in 11.0 and 12.0 libs, right?
Yes, it was only present in 11.0 and 12.0 libs.
Why not add such tests to msvcp110/tests?
Yeah, I just thought about it when I made the test, but there is no such an example in msvcp/msvcrt. What's more, msvcp110 reuses msvcp90's code. For these reasons, I took adding msvcp110 test to msvcp90 into account. However, I don't have a good idea which one is better. How do you think about it ? I will be grateful for any advice you can provide.
The tests should go to msvcp110/tests or msvcp120/tests directory. It may be easier to add them to msvcp120 because there already are some tests.
On Sun, 15 Mar 2015, YongHao Hu wrote: [...]
By the way, my crosstest on all the testbots[1] show that msvcp110.dll or msvcrt110.dll not installed. It seems testbot doesn't install msvcp110.
Here is the recipe for setting up the TestBot's VMs: http://wiki.winehq.org/WineTestBotVMs#head-4e6c020559c8a49b7723f5172adf2ab9f...
So I normally install the Visual C++ 2005, 2008 and 2010 redistributables but if I'm not mistaken I should add the 2012 redistributable to the list. I should probably also install the Visual C++ 2013 redistributable for msvcp120.
While we're on the subject, let me know if there are other libraries to add.