[4.7 Final] PhysX error isFinite

Howdy kodmistrz,

Thank you for reporting this error. I am going to need a bit more information before I can begin investigating what is occurring. Would you be able to provide the full build failed log to this post? Also, would you be able to clarify whether you would be using a Binary (Launcher) or Source (GitHub) build of UE4? Would this project be a Blueprint based project or Code based?

Any additional information would be greatly appreciated.

Thanks and have a great day!

Also, what version of NDK would you be using when packaging?

Hey kodmistrz,

I just wanted to check in with you and see if you are still experiencing this error with your project. Please let me know when you get the chance so that I may be able to further investigate if needed.

Thanks!

I get the same error as well. When I once configured my project for android, anytime when I compile my sourcecode in my game, this error pops up. the solution is to rename the functions in the physx code files, but come on… that should be fixed upstream :confused: i had it once on windows, but now its also under linux.

The fix is right now: Do as the error says: Replace all “isfinite” references with “isFinite”.

Maybe this problem is related with Victory BP Function library?

In file included from Runtime/Engine/Public/PhysXIncludes.h:19:
In file included from ThirdParty/PhysX/PhysX-3.3/include/PxPhysicsAPI.h:49:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxBounds3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxTransform.h:37:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxQuat.h:39:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxVec3.h:38:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxMath.h:50:
In file included from ThirdParty/PhysX/PhysX-3.3/include/foundation/PxIntrinsics.h:42:
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(92,10) :  error: use of undeclared identifier 'isfinite'; did you mean 'isFinite'?
                return isfinite(a);
                       ^~~~~~~~
                       isFinite
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(90,23) :  note: 'isFinite' declared here
        PX_FORCE_INLINE bool isFinite(float a)
                             ^
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(98,10) :  error: use of undeclared identifier 'isfinite'; did you mean 'isFinite'?
                return isfinite(a);
                       ^~~~~~~~
                       isFinite
ThirdParty/PhysX/PhysX-3.3/include/foundation/unix/PxUnixIntrinsics.h(90,23) :  note: 'isFinite' declared here
        PX_FORCE_INLINE bool isFinite(float a)

Thank you for the information Eduard.

Unfortunately, since this error is related to that user created plugin, the creator of the Plugin would have to fix the error on their end. We do not have access to that plugin, so we are unable to fix the error internally.

The user has provided a workaround for the issue until this has been resolved.

Have you been able to package a project without this plugin?

Thanks and have a great day!

Hi there!

That’s not actually a bug in my plugin itself, I am including the PhysX ThirdParty code as I explain how to do here:

The method described above has worked in many different Engine versions and works right now in PC and Linux builds (tested as working in 4.7)

#The Compile Errors, PhysX Unix

4.7\Engine\Source\ThirdParty\PhysX\PhysX-3.3\include\foundation\unix\PxUnixIntrinsics.h(92,9) :  error: use of undeclared identifier 'isfinite'; did you mean 'isFinite'?

The compile errors are not in my plugin, but in the PhysX Unix code, so what I need to know is if there is some better way to include PhysX in UE4 projects so that this Android compile error does not occur.

This is a question that I think UE4 developers would be best at answering, and the method I use is at my wiki link:

Integrating PhysX Code into Your Project

#Solution

Eduard what do you mean when you say this:

“The fix is right now: Do as the error says: Replace all “isfinite” references with “isFinite”.”

Are you saying you are actually doing this somewhere and then your project compiles?

I do not use isFinite() or isfinite() anywhere in my plugin, so it is not related to the Victory BP Library code itself.

#Would Love To Hear From Epic

I would love to hear from Epic how to include PhysX in projects and not get this Android compile error!

#Why Only Android?
These PhysX errors dont show up in Linux or PC builds, and I have no report of it not working for Mac, so why is it happening for Android?

#:heart:

Rama

The fix has to be deployed by Epic Games or Nvidia, because the “Thirdparty” directory is affected. The plugin directory is standalone at another location in the filesystem, and in my log there is no reference at all to the Victory BP Plugin.

Fix: Go to Engine\Source\ThirdParty\PhysX\PhysX-3.3\include\foundation\unix\PxUnixIntrinsics.h and replace isfinite with isFinite. a quick fix and its done, Epic Games.

Hey Eduard and Rama,

Terribly sorry about that mistake. I was reading that error wrong. I have reached out to the PhsyX team and I will be sure to update this post as soon as I receive any information regarding this issue.

Thanks!

#Thanks!

Woohoo thanks Sean!

#:heart:

Rama

PS: I looked at the code, Epic will have to talk to PhysX people about why Android can’t find lowercase isfinite vs isFinite and administer a proper solution.

Hey Eduard,

Would you be including before the headers , or have you enabled c++11?

Thanks!

Hi Eduard,

Just wanted to check in with you and see if you were able to see that question that was posted above. Any information on that question would be greatly appreciated.

Thanks and have a great day!

Hi Eduard,

We have not heard back from you in a few days, so we are marking this post as Resolved for tracking purposes. If you are still experiencing the issue you reported, please respond to this message with additional information and we will offer further assistance.

Thank you.

I dont understand the question? How can I enable C++11? I just normaly tried to compile via CLANG. Can you give me further instructions please?

Hello, I now responded to your questions.
I dont see new notifications, as I am unable to change the mail address of my Epic Games account , and its outdated :confused:

#Needs Fixing

Epic you still need to address these physX errors packaging with linux/Android!

Yeah, this problem is affecting my project on Android and Linux. Thank you Rama!

1>ThirdParty/PhysX/PhysX-3.3/include\foundation/unix/PxUnixIntrinsics.h(92,10): error : use of undeclared identifier 'isfinite'; did you mean 'isFinite'?
 1> return isfinite(a);

I haven’t tried 4.7.3 but I am having this issue with 4.7.2 - Thanks

For some odd reason did not appear in the previous post. The message should read: Would you be including before the headers, or have you enabled C++11?

I still dont understand it :confused: I just tried to compile it… I still don’t understand why you just dont change the capital letters and than fix the issue :/?
I am not very good in C++, and I know nothing about the compile process, I am sorry.

What I do know right now that not only Android is affected, but Linux in general as well.

(39) Rama's Extra Blueprint Nodes for You as a Plugin, No C++ Required! - Blueprint - Unreal Engine Forums , more and more people experience the same issue.

Thank you for the link Eduard. I have read through that link previously to see if there is any additional information I may be able to use to further investigate.

Since this involves our PhysX team, I am having to reach out to NVIDIA and see if they may be able to help with the issue. That is where the additional questions have been coming from.

I will respond to them asking for better clarification on how to resolve that issue or to better clarify the questions.

Thanks and have a great day!

This might be caused by something #include’ing <cmath> header, which #undef’s all normal math.h macros, including isfinite(). Unreal Engine doesn’t include this header itself (but some third party libraries do) and hence the issue may not be reproed directly.

While the proper fix is perhaps using PxIsfinite() method in PhysX headers, the short term fix is to make sure that neither you (nor libraries you use) include cmath (or re-include math.h before #include’ing PhysX headers).