Hello, I was trying to compile numpy v1.9.2 with Visual Studio 2008 and Cython 0.23.1. This worked fine with Cython 0.22.x, but in 0.23.1 there are some changes in Cython/Utility/TypeConversion.c that seem to cause this error: mtrand.obj : error LNK2019: unresolved external symbol llabs referenced in function __pyx_pf_6mtrand_11RandomState_24 choice llabs is not available in vs2008, but it ends up taking that "#elif" branch in TypeConversion.c and defining __Pyx_sst_abs to be llabs. I was able to fix this by swapping the order of the "#elif defined (_MSC_VER) ..." block with the "#elif defined (__STDC_VERSION__) ... " block. That probably won't fix the problem in all cases though. Thanks, Chris Hogan Scripting Tools Engineer Scripting, Analyzers and Tools Intel Corporation
Hi! None of the core developers uses MSVC, so we generally rely on Windows users to do their own testing and provide fixes. Hogan, Christopher schrieb am 30.09.2015 um 00:03:
I was trying to compile numpy v1.9.2 with Visual Studio 2008 and Cython 0.23.1. This worked fine with Cython 0.22.x, but in 0.23.1 there are some changes in Cython/Utility/TypeConversion.c that seem to cause this error:
mtrand.obj : error LNK2019: unresolved external symbol llabs referenced in function __pyx_pf_6mtrand_11RandomState_24 choice
llabs is not available in vs2008, but it ends up taking that "#elif" branch in TypeConversion.c and defining __Pyx_sst_abs to be llabs. I was able to fix this by swapping the order of the "#elif defined (_MSC_VER) ..." block with the "#elif defined (__STDC_VERSION__) ... " block.
So, what you are saying is that VS-2008 is not C99 standards compliant (what a surprise) but claims to be? Are you passing any C compiler flags that requests C99 compliance? The last changes in this area were here: https://github.com/cython/cython/pull/403 The contributor claimed to be using MSVC 2008, too, so I wonder why you run into this problem but he didn't.
That probably won't fix the problem in all cases though.
To me, your proposed change seems a reasonable thing to do. What cases are you thinking of? Stefan
Stefan Behnel schrieb am 30.09.2015 um 09:13:
Hogan, Christopher schrieb am 30.09.2015 um 00:03:
I was trying to compile numpy v1.9.2 with Visual Studio 2008 and Cython 0.23.1. This worked fine with Cython 0.22.x, but in 0.23.1 there are some changes in Cython/Utility/TypeConversion.c that seem to cause this error:
mtrand.obj : error LNK2019: unresolved external symbol llabs referenced in function __pyx_pf_6mtrand_11RandomState_24 choice
llabs is not available in vs2008, but it ends up taking that "#elif" branch in TypeConversion.c and defining __Pyx_sst_abs to be llabs. I was able to fix this by swapping the order of the "#elif defined (_MSC_VER) ..." block with the "#elif defined (__STDC_VERSION__) ... " block.
So, what you are saying is that VS-2008 is not C99 standards compliant (what a surprise) but claims to be? Are you passing any C compiler flags that requests C99 compliance?
The last changes in this area were here:
https://github.com/cython/cython/pull/403
The contributor claimed to be using MSVC 2008, too, so I wonder why you run into this problem but he didn't.
That probably won't fix the problem in all cases though.
To me, your proposed change seems a reasonable thing to do. What cases are you thinking of?
I applied your change for now, it's in the 0.23.x. maintenance branch: https://github.com/cython/cython/commit/8bf936e5449592b8b69dd56c09640db8c0ab... Stefan
Hi, On 9/30/2015 12:13 AM, Stefan Behnel wrote:
Hi!
None of the core developers uses MSVC, so we generally rely on Windows users to do their own testing and provide fixes.
Hogan, Christopher schrieb am 30.09.2015 um 00:03:
I was trying to compile numpy v1.9.2 with Visual Studio 2008 and Cython 0.23.1. This worked fine with Cython 0.22.x, but in 0.23.1 there are some changes in Cython/Utility/TypeConversion.c that seem to cause this error:
mtrand.obj : error LNK2019: unresolved external symbol llabs referenced in function __pyx_pf_6mtrand_11RandomState_24 choice
llabs is not available in vs2008, but it ends up taking that "#elif" branch in TypeConversion.c and defining __Pyx_sst_abs to be llabs. I was able to fix this by swapping the order of the "#elif defined (_MSC_VER) ..." block with the "#elif defined (__STDC_VERSION__) ... " block.
So, what you are saying is that VS-2008 is not C99 standards compliant (what a surprise) but claims to be? Are you passing any C compiler flags that requests C99 compliance?
The last changes in this area were here:
https://github.com/cython/cython/pull/403
The contributor claimed to be using MSVC 2008, too, so I wonder why you run into this problem but he didn't.
I can't reproduce this either. Probably __STDC_VERSION__ is somehow defined on Christopher's system. Christoph
That probably won't fix the problem in all cases though.
To me, your proposed change seems a reasonable thing to do. What cases are you thinking of?
Stefan _______________________________________________ cython-devel mailing list cython-devel@python.org https://mail.python.org/mailman/listinfo/cython-devel
participants (3)
-
Christoph Gohlke -
Hogan, Christopher -
Stefan Behnel