Hi,
I’m a developer in Visual C++ compiler team. We are currently doing daily RWC (Read World Code) testing. Some of the libraries we test use WTL.
We are also working with internal partners and the community to fix source issues exposed by /permissive-.
The option isn’t finalized yet (we plan to add some large impact features into it in the incoming VS update), so we don’t suggest community to adopt it yet.
In the meantime, we want to address these source issues as early as possible so that the community can adopt it when it is finalized.
We discover some source issues when we build WTL with /permissive-.
For example, in 'atldlgs.h', there are three places which call method from a dependent base and this is not allowed by C++ standard and MSVC enforces the requirement under /permissive-:
One possible fix is to prefix these base methods with 'this->':
There are lots of errors :-) You can see them by adding compiler flags '/permissive- /Zc:strictStrings-' to the projects in 'Sample' folder (Right click on the project, choose 'Properties', it is in 'Property Pages - Configuration Properties - C/C++ - Command Line - Additional Options'.
There are lots of errors :-) You can see them by adding compiler flags
'/permissive- /Zc:strictStrings-' to the projects in 'Sample' folder (Right
click on the project, choose 'Properties', it is in 'Property Pages -
Configuration Properties - C/C++ - Command Line - Additional Options'.
This will require a very large number of changes to the WTL code. Because of that, the changes will not be applied to the WTL 9.1 code, but to the next version of WTL.
Thanks,
Nenad
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Support for /permissive- is quite usable right now, other than mentioned
issue. If you think about all of WTL10, I expect final version in th first
half of the next year.
I see continued work on supporting /permissive-, thanks very much. Do you think the current trunk is useable for production software? If not, any update on when WTL10 will be released?
Thanks,
Paul
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I see continued work on supporting /permissive-, thanks very much. Do you
think the current trunk is useable for production software? If not, any
update on when WTL10 will be released?
Just to share some good news. I updated our WTL to 10.9163 and made a few last tweaks to our code that uses WTL (make use of new macros that allow us to specify the enclosing class). A complex project we have now compiles with /permissive- using VS2019 16.1.4. Thanks very much for your work!
Regards,
Paul
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
I’m a developer in Visual C++ compiler team. We are currently doing daily RWC (Read World Code) testing. Some of the libraries we test use WTL.
We are also working with internal partners and the community to fix source issues exposed by /permissive-.
The option isn’t finalized yet (we plan to add some large impact features into it in the incoming VS update), so we don’t suggest community to adopt it yet.
In the meantime, we want to address these source issues as early as possible so that the community can adopt it when it is finalized.
We discover some source issues when we build WTL with /permissive-.
For example, in 'atldlgs.h', there are three places which call method from a dependent base and this is not allowed by C++ standard and MSVC enforces the requirement under /permissive-:
One possible fix is to prefix these base methods with 'this->':
Issue 1:
LRESULT lRet = DefWindowProc(uMsg, wParam, lParam);
->
LRESULT lRet = this->DefWindowProc(uMsg, wParam, lParam);
Issue 2:
((m_psh.dwFlags & PSH_MODELESS) != 0) && (GetActivePage() == NULL))
DestroyWindow();
->
((m_psh.dwFlags & PSH_MODELESS) != 0) && (this->GetActivePage() == NULL))
this->DestroyWindow();
What is the best way to get these issues fixed?
Thanks!
There are lots of errors :-) You can see them by adding compiler flags '/permissive- /Zc:strictStrings-' to the projects in 'Sample' folder (Right click on the project, choose 'Properties', it is in 'Property Pages - Configuration Properties - C/C++ - Command Line - Additional Options'.
Here is the blog post for '/permissive-'.
Hi,
Thanks for the info. This was reported before and we are aware of it.
It will be fixed, but not quickly, exactly because there are many places
that require changes.
Thanks,
Nenad
On Fri, May 5, 2017 at 4:50 PM, Xiang Fan xiangfan@users.sf.net wrote:
This will require a very large number of changes to the WTL code. Because of that, the changes will not be applied to the WTL 9.1 code, but to the next version of WTL.
Thanks,
Nenad
Hi,
Thanks for the response. As long as it is on your radar, it is good :-).
what's the status on this?
can I start a new project with VS 2017 and WTL or I rather look somewhere else?
Thanks.
It is not fixed yet, sorry.
We cannot just patch current sources because we have additional changes
coming first. It will be done in next month or two.
If this feature is not critical for you, you can start a new project
without it, and later turn it on when the support for it is ready.
Thanks,
Nenad
On Sat, Aug 19, 2017 at 1:31 PM, foxpat foxpat@users.sf.net wrote:
OK man thanks for your answer; don't give up, we count on a healthy WTL hopefully soon.
Thank you - I won't give up :-)
On Sun, Aug 20, 2017 at 5:20 PM, foxpat foxpat@users.sf.net wrote:
Compiling with /permissive- is now fully supported.
Commit: https://sourceforge.net/p/wtl/git/ci/780f1299e8d424f8a6bb3cf0fd05755d3aa85682/
Please let me know if I missed anything.
Cheers,
Nenad
Using the latest commit (#ebb00f) this looks good to me and is working.
Great!
On Fri, Nov 10, 2017 at 8:33 AM, klaus triendl trueqbit@users.sf.net
wrote:
Thank you for your work on /permissive- !
Some things I found:
atlsplit.h breaks on DECLARE_WND_CLASS_EX() from atlwin.h. Is there a workaround?
Also atlcrack.h no longer works with BEGIN_MSG_MAP() but it works with BEGIN_MSG_MAP_EX() so that's ok
Thank for reporting this. I will take a look at it.
Cheers,
Nenad
On Wed, Dec 6, 2017 at 3:11 AM, Gert-Jan de Vos gertjandevos@users.sf.net
wrote:
These issues are now fixed.
Commit:
https://sourceforge.net/p/wtl/git/ci/df23e8dad8133eed4df2674b52249aa72ded5abd/
Cheers,
Nenad
On Wed, Dec 6, 2017 at 3:11 AM, Gert-Jan de Vos gertjandevos@users.sf.net
wrote:
Great to see you working on /permissive- support. Any idea of a production date?
Support for /permissive- is quite usable right now, other than mentioned
issue. If you think about all of WTL10, I expect final version in th first
half of the next year.
Cheers,
Nenad
On Wed, Dec 6, 2017 at 3:32 PM, paul pwcameron@users.sf.net wrote:
I see continued work on supporting /permissive-, thanks very much. Do you think the current trunk is useable for production software? If not, any update on when WTL10 will be released?
Thanks,
Paul
I think that the current trunk is quite usable - there are no big
outstanding problems.
The final release should be sometimes toward the end of the year.
Cheers,
Nenad
On Thu, Sep 20, 2018 at 4:09 PM paul pwcameron@users.sourceforge.net
wrote:
Hi,
I just tried 10.0.8356 - many things are fixed, thanks very much. Here is one more issue:
error C3861: 'm_hWndClient': identifier not found due to CHAIN_CLIENT_COMMANDS() in atlframe.h
There are others, but they are in MS code:
https://developercommunity.visualstudio.com/content/problem/531139/atl-macros-wont-compile-wtih-permissive.html
Thanks,
Paul
Hi Paul,
Thanks very much for finding this one. It is fixed now, as well
as CHAIN_MDI_CHILD_COMMANDS()
Cheers,
Nenad
On Fri, Apr 12, 2019 at 9:34 AM paul pwcameron@users.sourceforge.net
wrote:
Hi Nenad,
Just to share some good news. I updated our WTL to 10.9163 and made a few last tweaks to our code that uses WTL (make use of new macros that allow us to specify the enclosing class). A complex project we have now compiles with /permissive- using VS2019 16.1.4. Thanks very much for your work!
Regards,
Paul
Great news!
Thanks,
Nenad