Jump to page: 1 2
Thread overview
VisualD and VS2012
Jan 21, 2014
Manu
Jan 21, 2014
Bigsandwich
Jan 21, 2014
Walter Bright
Jan 22, 2014
Manu
Jan 22, 2014
Walter Bright
Jan 22, 2014
Manu
Jan 22, 2014
Walter Bright
Jan 22, 2014
Manu
Jan 22, 2014
Walter Bright
Jan 22, 2014
Rainer Schuetze
Jan 22, 2014
Manu
Jan 22, 2014
Manu
Jan 22, 2014
Manu
January 21, 2014
Who here uses VisualD under VS2012?

I just installed 2012 and tried it out, I'm having some strange problems
that I don't seem to have under VS2010.
So, the trouble scenario is when I try and link a C++ lib against a VisualD
project.
I set the C++ lib project as a dependency of the D executable project in
the solution dependencies, and then it tries to link, but there are
problems:

1>libcpmtd.lib(xthrow.obj) : error LNK2038: mismatch detected for
'_MSC_VER': value '1600' doesn't match value '1700' in
Fuji_Debug.lib(MFPrimitive_Plug.obj)
1>   Creating library .\FeedBack_Debug.lib and object .\FeedBack_Debug.exp
1>Fuji_Debug.lib(pngerror.obj) : error LNK2001: unresolved external symbol
__report_rangecheckfailure
1>Fuji_Debug.lib(ReadAssImp.obj) : error LNK2019: unresolved external
symbol "void __cdecl std::_Xbad_alloc(void)" (?_Xbad_alloc@std@@YAXXZ)
referenced in function "char * __cdecl std::_Allocate<char>(unsigned
__int64,char *)" (??$_Allocate@D@std@@YAPEAD_KPEAD@Z)
1>Fuji_Debug.lib(ReadAssImp.obj) : error LNK2019: unresolved external
symbol "char const * __cdecl std::_Syserror_map(int)" (?_Syserror_map@std
@@YAPEBDH@Z) referenced in function "public: virtual class
std::error_condition __cdecl
std::_System_error_category::default_error_condition(int)const "
(?default_error_condition@_System_error_category@std
@@UEBA?AVerror_condition@2@H@Z)
1>Fuji_Debug.lib(ReadAssImp.obj) : error LNK2019: unresolved external
symbol "char const * __cdecl std::_Winerror_map(int)" (?_Winerror_map@std
@@YAPEBDH@Z) referenced in function "public: virtual class
std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> > __cdecl
std::_System_error_category::message(int)const " (?message@
_System_error_category@std@@UEBA?AV?$basic_string@DU?$char_traits@D@std@
@V?$allocator@D@2@@2@H@Z)
1>libcpmtd.lib(stdthrow.obj) : error LNK2019: unresolved external symbol
_CrtDbgReportW referenced in function "void __cdecl
std::_Debug_message(wchar_t const *,wchar_t const *,unsigned int)"
(?_Debug_message@std@@YAXPEB_W0I@Z)
1>.\FeedBack_Debug.exe : fatal error LNK1120: 5 unresolved externals

Linking the exact same .lib file against a C++ exe project, there is no
problem, so this only occurs when linking to a VisualD built exe.
I suspect that VisualD is either executing the VS2010 linker, even though
I'm running VS2012, or maybe it's trying to link the VS2010 libs instead of
the 2012 libs?

I suspect it's yet another one of those 'paths are all confused' problems, where the issue lies somewhere between sc.ini and VisualD's overrides... but maybe not?

Anyone with experience on this?
Rainer?


January 21, 2014
Yeah, looks like its linking the 2010 runtime:

http://stackoverflow.com/questions/70013/how-to-detect-if-im-compiling-code-with-visual-studio-2008

http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx

On Tuesday, 21 January 2014 at 09:38:31 UTC, Manu wrote:
> Who here uses VisualD under VS2012?
>
> I just installed 2012 and tried it out, I'm having some strange problems
> that I don't seem to have under VS2010.
> So, the trouble scenario is when I try and link a C++ lib against a VisualD
> project.
> I set the C++ lib project as a dependency of the D executable project in
> the solution dependencies, and then it tries to link, but there are
> problems:
>
> 1>libcpmtd.lib(xthrow.obj) : error LNK2038: mismatch detected for
> '_MSC_VER': value '1600' doesn't match value '1700' in
> Fuji_Debug.lib(MFPrimitive_Plug.obj)
> 1>   Creating library .\FeedBack_Debug.lib and object .\FeedBack_Debug.exp
> 1>Fuji_Debug.lib(pngerror.obj) : error LNK2001: unresolved external symbol
> __report_rangecheckfailure
> 1>Fuji_Debug.lib(ReadAssImp.obj) : error LNK2019: unresolved external
> symbol "void __cdecl std::_Xbad_alloc(void)" (?_Xbad_alloc@std@@YAXXZ)
> referenced in function "char * __cdecl std::_Allocate<char>(unsigned
> __int64,char *)" (??$_Allocate@D@std@@YAPEAD_KPEAD@Z)
> 1>Fuji_Debug.lib(ReadAssImp.obj) : error LNK2019: unresolved external
> symbol "char const * __cdecl std::_Syserror_map(int)" (?_Syserror_map@std
> @@YAPEBDH@Z) referenced in function "public: virtual class
> std::error_condition __cdecl
> std::_System_error_category::default_error_condition(int)const "
> (?default_error_condition@_System_error_category@std
> @@UEBA?AVerror_condition@2@H@Z)
> 1>Fuji_Debug.lib(ReadAssImp.obj) : error LNK2019: unresolved external
> symbol "char const * __cdecl std::_Winerror_map(int)" (?_Winerror_map@std
> @@YAPEBDH@Z) referenced in function "public: virtual class
> std::basic_string<char,struct std::char_traits<char>,class
> std::allocator<char> > __cdecl
> std::_System_error_category::message(int)const " (?message@
> _System_error_category@std@@UEBA?AV?$basic_string@DU?$char_traits@D@std@
> @V?$allocator@D@2@@2@H@Z)
> 1>libcpmtd.lib(stdthrow.obj) : error LNK2019: unresolved external symbol
> _CrtDbgReportW referenced in function "void __cdecl
> std::_Debug_message(wchar_t const *,wchar_t const *,unsigned int)"
> (?_Debug_message@std@@YAXPEB_W0I@Z)
> 1>.\FeedBack_Debug.exe : fatal error LNK1120: 5 unresolved externals
>
> Linking the exact same .lib file against a C++ exe project, there is no
> problem, so this only occurs when linking to a VisualD built exe.
> I suspect that VisualD is either executing the VS2010 linker, even though
> I'm running VS2012, or maybe it's trying to link the VS2010 libs instead of
> the 2012 libs?
>
> I suspect it's yet another one of those 'paths are all confused' problems,
> where the issue lies somewhere between sc.ini and VisualD's overrides...
> but maybe not?
>
> Anyone with experience on this?
> Rainer?

January 21, 2014
On 1/21/2014 1:38 AM, Manu wrote:
> I suspect that VisualD is either executing the VS2010 linker, even though I'm
> running VS2012, or maybe it's trying to link the VS2010 libs instead of the 2012
> libs?

This should be easy to verify one way or the other. Check the paths in the config files. Worst case, delete the VS2010 libs and executables (or simply rename the directory they're in).
January 22, 2014
On 22 January 2014 08:33, Walter Bright <newshound2@digitalmars.com> wrote:

> On 1/21/2014 1:38 AM, Manu wrote:
>
>> I suspect that VisualD is either executing the VS2010 linker, even though
>> I'm
>> running VS2012, or maybe it's trying to link the VS2010 libs instead of
>> the 2012
>> libs?
>>
>
> This should be easy to verify one way or the other. Check the paths in the config files. Worst case, delete the VS2010 libs and executables (or simply rename the directory they're in).
>

It's not so simple, because VisualD attempts to override the paths in the
config files, it gets complicated and I have no clear view where the paths
used actually come from.
The reason is, it's common to have many versions of Visual Studio installed
in parallel on the same machine, so while working with VisualD, the
libs+linker that DMD should be using is the one that belongs to the *active
VS environment*; sc.ini should be ignored, it is only configured for one
particular VS upon installation, so it's wrong every time you change
environment (often).

Perhaps the problem here is that sc.ini isn't being ignored; it seems to be
configured to point to VS2010...
...yes, seems to be the case. I amended my sc.ini file to point to the
VS2012 stuff and it works much better. Only one link error:

1>libcpmtd.lib(stdthrow.obj) : error LNK2019: unresolved external symbol
_CrtDbgReportW referenced in function "void __cdecl
std::_Debug_message(wchar_t const *,wchar_t const *,unsigned int)"
(?_Debug_message@std@@YAXPEB_W0I@Z)

Strange.. I wonder where that's supposed to come from :/

So, VisualD should be ignoring sc.ini as I understand it, but it seems that it's not... Rainer?


January 22, 2014
On 1/21/2014 5:09 PM, Manu wrote:
> It's not so simple,  because VisualD attempts to override the paths in the config
> files, it gets complicated and I have no clear view where the paths used
> actually come from.

VisualD cannot find files that are not there - so remove those files, and then see what happens.

January 22, 2014
On 22 January 2014 11:16, Walter Bright <newshound2@digitalmars.com> wrote:

> On 1/21/2014 5:09 PM, Manu wrote:
>
>> It's not so simple,  because VisualD attempts to override the paths in the config
>>
>> files, it gets complicated and I have no clear view where the paths used actually come from.
>>
>
> VisualD cannot find files that are not there - so remove those files, and then see what happens.
>

I'm not sure what you mean... remove sc.ini?
VisualD doesn't appear to be doing any magic (although it should). It's
just taking the usual paths from sc.ini verbatim. This would seem to be the
problem.


January 22, 2014
On 22 January 2014 11:16, Walter Bright <newshound2@digitalmars.com> wrote:

> On 1/21/2014 5:09 PM, Manu wrote:
>
>> It's not so simple,  because VisualD attempts to override the paths in the config
>>
>> files, it gets complicated and I have no clear view where the paths used actually come from.
>>
>
> VisualD cannot find files that are not there - so remove those files, and then see what happens.
>

Slightly OT, but while we're on VisualD, can you chime in on this:
https://d.puremagic.com/issues/show_bug.cgi?id=11902
It's really frustrating, on a minute-ly basis >_<


January 22, 2014
On 22 January 2014 11:09, Manu <turkeyman@gmail.com> wrote:

> ...yes, seems to be the case. I amended my sc.ini file to point to the VS2012 stuff and it works much better. Only one link error:
>
> 1>libcpmtd.lib(stdthrow.obj) : error LNK2019: unresolved external symbol
> _CrtDbgReportW referenced in function "void __cdecl
> std::_Debug_message(wchar_t const *,wchar_t const *,unsigned int)"
> (?_Debug_message@std@@YAXPEB_W0I@Z)
>
> Strange.. I wonder where that's supposed to come from :/
>

This final link error appears to be a CRT mismatch. The C++ code is built
against the debug CRT, but I think DMD/VisualD (because VD handles the link
step manually?) is trying to link the non-debug lib.
How can I control which CRT DMD/VisualD will link against?
I can't see any options for DMD, and VisualD doesn't seem to expose any
option either. Passing /MTd to the linker doesn't have any effect, it's an
MSC compiler option, not a linker option.


January 22, 2014
On 1/21/2014 5:24 PM, Manu wrote:
> On 22 January 2014 11:16, Walter Bright <newshound2@digitalmars.com
> <mailto:newshound2@digitalmars.com>> wrote:
>
>     On 1/21/2014 5:09 PM, Manu wrote:
>
>         It's not so simple,  because VisualD attempts to override the paths in
>         the config
>
>         files, it gets complicated and I have no clear view where the paths used
>         actually come from.
>
>
>     VisualD cannot find files that are not there - so remove those files, and
>     then see what happens.
>
>
> I'm not sure what you mean... remove sc.ini?


I mean remove these files: "I suspect that VisualD is either executing the VS2010 linker, even though I'm running VS2012, or maybe it's trying to link the VS2010 libs instead of the 2012 libs?"

That would clear up the suspicion and the maybes.
January 22, 2014
On 22 January 2014 12:45, Walter Bright <newshound2@digitalmars.com> wrote:

> On 1/21/2014 5:24 PM, Manu wrote:
>
>> On 22 January 2014 11:16, Walter Bright <newshound2@digitalmars.com
>>
>> <mailto:newshound2@digitalmars.com>> wrote:
>>
>>     On 1/21/2014 5:09 PM, Manu wrote:
>>
>>         It's not so simple,  because VisualD attempts to override the
>> paths in
>>         the config
>>
>>         files, it gets complicated and I have no clear view where the
>> paths used
>>         actually come from.
>>
>>
>>     VisualD cannot find files that are not there - so remove those files,
>> and
>>     then see what happens.
>>
>>
>> I'm not sure what you mean... remove sc.ini?
>>
>
>
> I mean remove these files: "I suspect that VisualD is either executing the VS2010 linker, even though I'm running VS2012, or maybe it's trying to link the VS2010 libs instead of the 2012 libs?"
>
> That would clear up the suspicion and the maybes.
>

I don't think there's any maybe's about it, I amended sc.ini to point to
the VS2012 paths instead of the original 2010 paths, and VisualD
immediately started working fine within VS2012 (except for the CRT problem
I bugged separately).
Are you suggesting I; revert sc.ini to its original VS2010 configuration,
then remove the VS2010 paths so VD can't find it, and see if it then tries
the 2012 paths as a fallback?


« First   ‹ Prev
1 2