If you are interested in recompiling the software,
you may take a look at http://www.iaas.msu.ru/tmp/u3d/u3d-1.2.852.tar.gz
I have replaced the custom build system in Intel sources with
autotools (tested on Linux and Mac) and cmake (Windows, Linux, Mac).
Comments welcome.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thank you for adding a CMake build interface. I had a bunch of link errors using the precompiled libs. Seems like a few symbols were not exported in the DLL's. Looking in a few header files, I didn't find __declspec(dllexport) statements so
the author must have been using a .def file for exporting and missing to export a few functions there.
Recompiling the code with your CMake script, however, fixed the problem.
Dear project mainteners: Please switch to CMake
Cheers,
Babak Sayyid Hosseini
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2010-08-27
Thanks for this essential addition to this project.
I've compiled and install it on a linux64 centos5 machine.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
A variant with addition of static IDTF library and an IDTFGen.cpp example of its use (essentially it is IDTFConverter without IDTF parser) is at http://www.iaas.msu.ru/tmp/u3d/u3d-1.3.tar.gz .
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The old versions at http://www2.iaas.msu.ru/tmp/u3d/u3d-1.2.852.tar.gz
and http://www2.iaas.msu.ru/tmp/u3d/u3d-1.2.852.tgz
may have Rendering support in autotools build under Mac and Linux.
I have given up on the idea since:
Adobe 3D viewer is not based on Intel code
Mac rendering is based on obsolete API.
My (much less than half-hearted) attempt to build rendering on Windows failed for reasons I do not remember.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2013-03-03
Hi Michail,
I search for an Universal 3D Sample Software for mac 2 days already. I finally reached a forum and download the one packaged by you, named. U3D_A_061228_5
But somehow i cannot use cmake .; make; make install to install the package. When i use make, i received the errors below. The first error seems to has something to do with the IFXAttributes.h file.
Matt
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:36:3: error: call to function
'memset' that is neither visible in the template definition nor found by argument-dependent
lookup
memset(flags, 0, sizeof(flags));
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:118:11: note: in instantiation of
member function 'IFXAttributes<22>::IFXAttributes' requested here
CIFXMesh::CIFXMesh()
^
/usr/include/string.h:84:7: note: 'memset' should be declared prior to the call site
void *memset(void *, int, size_t);
^
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:49:3: error: call to function
'memcpy' that is neither visible in the template definition nor found by argument-dependent
lookup
memcpy(flags, src.flags, sizeof(flags));
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:423:16: note: in instantiation of
member function 'IFXAttributes<22>::operator=' requested here
eDirtyAttribs = CalculateDirtyAttribs(eAllAttribs);
^
/usr/include/string.h:82:7: note: 'memcpy' should be declared prior to the call site
void *memcpy(void *, const void *, size_t);
^
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:151:11: error: call to function
'memcmp' that is neither visible in the template definition nor found by argument-dependent
lookup
return (memcmp(flags, src.flags, sizeof(flags)) != 0);
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:595:21: note: in instantiation of
member function 'IFXAttributes<22>::operator!=' requested here
if(eNewAllAttribs != eAllAttribs)
^
/usr/include/string.h:81:6: note: 'memcmp' should be declared prior to the call site
int memcmp(const void *, const void *, size_t);
^
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:40:3: error: call to function
'memcpy' that is neither visible in the template definition nor found by argument-dependent
lookup
memcpy(flags, src.flags, sizeof(flags));
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:856:36: note: in instantiation of
member function 'IFXAttributes<22>::IFXAttributes' requested here
IFXMeshAttributes eDirtyAttribs = CalculateDirtyAttribs(eAllAttribs);
^
/usr/include/string.h:82:7: note: 'memcpy' should be declared prior to the call site
void *memcpy(void *, const void *, size_t);
^
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:147:11: error: call to function
'memcmp' that is neither visible in the template definition nor found by argument-dependent
lookup
return (memcmp(flags, src.flags, sizeof(flags)) == 0);
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:944:20: note: in instantiation of
member function 'IFXAttributes<22>::operator==' requested here
if((eDirtyAttribs == eAllAttribs) && (eAllAttribs == IFXMeshAttributes(IFX_MESH_POSITION)))
^
/usr/include/string.h:81:6: note: 'memcmp' should be declared prior to the call site
int memcmp(const void *, const void *, size_t);
^
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:44:3: error: call to function
'memset' that is neither visible in the template definition nor found by argument-dependent
lookup
memset(flags, 0, sizeof(flags));
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:944:55: note: in instantiation of
member function 'IFXAttributes<22>::IFXAttributes' requested here
if((eDirtyAttribs == eAllAttribs) && (eAllAttribs == IFXMeshAttributes(IFX_MESH_POSITION)))
^
/usr/include/string.h:84:7: note: 'memset' should be declared prior to the call site
void *memset(void *, int, size_t);
^
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:54:3: error: call to function
'memset' that is neither visible in the template definition nor found by argument-dependent
lookup
memset(flags, 0, sizeof(flags));
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:1079:24: note: in instantiation of
member function 'IFXAttributes<22>::operator=' requested here
m_eInterleavedAttribs = 0;
^
/usr/include/string.h:84:7: note: 'memset' should be declared prior to the call site
void *memset(void *, int, size_t);
^
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:179:3: error: call to function
'memset' that is neither visible in the template definition nor found by argument-dependent
lookup
memset(flags, 0, sizeof(flags));
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:1691:14: note: in instantiation of
member function 'IFXAttributes<22>::clear' requested here
eAllAttribs.clear();
^
/usr/include/string.h:84:7: note: 'memset' should be declared prior to the call site
void *memset(void *, int, size_t);
^
8 errors generated.
make: *** Error 1
make: *** Error 2
make: *** Error 2
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I believe the compile error is due to changes in recent versions of gcc; see http://gcc.gnu.org/gcc-4.3/porting_to.html
about "Header dependency cleanup." Basically, #include statements were removed from header files where they had been for centuries and this breaks pretty much any existing code that used to compile with previous versions of gcc. You need to find which header file is missing from where and add it.
In this case, I believe the missing header is string.h (Do a "man memset" to see what is needed.) Since this is C++, I added the line
#include<cstring>
in RTL/Component/include/IFXAttributes.h after which the compilation completes successfully.
However, when I try to run any of the produced executables (IDTFConverter, IDTFGen, HelloWorld) they all segfault. (Same result if I #include <string.h> instead of <cstring>.)
I am using gcc version 4.7.2 on Ubuntu 12.10.
If anybody else can make some more progress, please let us know.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
> when I try to run any of the produced executables … they all segfault.
> I am using gcc version 4.7.2 on Ubuntu 12.10.
> It's a 32-bit system
Comment out the call to cpuid in IFXOSInitialize in RTL/Platform/Lin32/Common/IFXOSUtilities.cpp.
It is some asm mumbo-jumbo to determine at run time if CPU is capable of MMX or SSE.
If check is disabled and generic code is used instead of vector operations, there will be some performance loss, but likely unnoticeable one.
Report results.
I'll try to make a new version of u3d repack, with fixes for new compiler warnings and updated bundled libraries, some time soon.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Yes, that worked. I was able to create an executable IDTFConverter and install it, after which I could convert a file to .u3d and embed it into a PDF document. Everything looks good. Thank you.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Try commenting out X3D export in vtkU3DExporterTest sources, it crashed for me recently.
X3D export is not required for U3D export, it is there just to have something to compare to.
If that does not help - report and I'll try to investigate.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It runs and generate the test.u3d file, I embedded the test.u3d file in a PDF and it shows up fine.
However, I noticed the following errors when the vtk test program ends
X Error of failed request: GLXBadDrawable
Major opcode of failed request: 128 (GLX)
Minor opcode of failed request: 11 (X_GLXSwapBuffers)
Serial number of failed request: 92
Current serial number in output stream: 92
I thought you might like to know about that too.
Cheers
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Looks like drawing error.
Try to disable on-screen drawing of the test scene to test that.
Someone using this code told me he had to update it to match VTK changes, but did not share results. May be some primitives I used in the test scene are obsolete or broken now.
If you are interested in 3D VTK export using FOSS tools and have time and knowledge of VTK necessary for co-developing/testing it, I can revisit the issue.
I do not use VTK now and make 3D PDFs with other tools.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
If you are interested in recompiling the software,
you may take a look at http://www.iaas.msu.ru/tmp/u3d/u3d-1.2.852.tar.gz
I have replaced the custom build system in Intel sources with
autotools (tested on Linux and Mac) and cmake (Windows, Linux, Mac).
Comments welcome.
Thank you for adding a CMake build interface. I had a bunch of link errors using the precompiled libs. Seems like a few symbols were not exported in the DLL's. Looking in a few header files, I didn't find __declspec(dllexport) statements so
the author must have been using a .def file for exporting and missing to export a few functions there.
Recompiling the code with your CMake script, however, fixed the problem.
Dear project mainteners: Please switch to CMake
Cheers,
Babak Sayyid Hosseini
Thanks for this essential addition to this project.
I've compiled and install it on a linux64 centos5 machine.
A variant with addition of static IDTF library and an IDTFGen.cpp example of its use (essentially it is IDTFConverter without IDTF parser) is at http://www.iaas.msu.ru/tmp/u3d/u3d-1.3.tar.gz .
I have updated my repack of the sources.
No major fixes.
It is http://www.iaas.msu.ru/tmp/u3d/u3d-1.4.tar.gz .
support building with MinGW
http://www.iaas.msu.ru/tmp/u3d/u3d-1.4.1.tar.gz
fixed Win32 compilation with __stdcall set in IFXAPI.h
put VTK U3D Exporter to the code samples section
made libIDTF shared library on Linux
http://www.iaas.msu.ru/tmp/u3d/u3d-1.4.2.tar.gz
Can anybody update links to the U3D library repack? Current links doesn't work.
http://www2.iaas.msu.ru/tmp/u3d/u3d-1.4.3.tar.gz
updated png library, some MSVC Win64 build issues fixed
Thanks, it was so fast )) Your update will be useful for me.
Hi mvid, Do you know the way to compile IFXRendering project?
The old versions at http://www2.iaas.msu.ru/tmp/u3d/u3d-1.2.852.tar.gz
and http://www2.iaas.msu.ru/tmp/u3d/u3d-1.2.852.tgz
may have Rendering support in autotools build under Mac and Linux.
I have given up on the idea since:
Adobe 3D viewer is not based on Intel code
Mac rendering is based on obsolete API.
My (much less than half-hearted) attempt to build rendering on Windows failed for reasons I do not remember.
Hi Michail,
I search for an Universal 3D Sample Software for mac 2 days already. I finally reached a forum and download the one packaged by you, named. U3D_A_061228_5
I got the download link from the forum (last post, 2012-4-12)
http://sourceforge.net/projects/u3d/forums/forum/557102/topic/3424219
download link: http://www2.iaas.msu.ru/tmp/u3d/u3d-1.2.852.tgz
But somehow i cannot use cmake .; make; make install to install the package. When i use make, i received the errors below. The first error seems to has something to do with the IFXAttributes.h file.
Matt
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:36:3: error: call to function
'memset' that is neither visible in the template definition nor found by argument-dependent
lookup
memset(flags, 0, sizeof(flags));
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:118:11: note: in instantiation of
member function 'IFXAttributes<22>::IFXAttributes' requested here
CIFXMesh::CIFXMesh()
^
/usr/include/string.h:84:7: note: 'memset' should be declared prior to the call site
void *memset(void *, int, size_t);
^
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:49:3: error: call to function
'memcpy' that is neither visible in the template definition nor found by argument-dependent
lookup
memcpy(flags, src.flags, sizeof(flags));
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:423:16: note: in instantiation of
member function 'IFXAttributes<22>::operator=' requested here
eDirtyAttribs = CalculateDirtyAttribs(eAllAttribs);
^
/usr/include/string.h:82:7: note: 'memcpy' should be declared prior to the call site
void *memcpy(void *, const void *, size_t);
^
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:151:11: error: call to function
'memcmp' that is neither visible in the template definition nor found by argument-dependent
lookup
return (memcmp(flags, src.flags, sizeof(flags)) != 0);
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:595:21: note: in instantiation of
member function 'IFXAttributes<22>::operator!=' requested here
if(eNewAllAttribs != eAllAttribs)
^
/usr/include/string.h:81:6: note: 'memcmp' should be declared prior to the call site
int memcmp(const void *, const void *, size_t);
^
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:40:3: error: call to function
'memcpy' that is neither visible in the template definition nor found by argument-dependent
lookup
memcpy(flags, src.flags, sizeof(flags));
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:856:36: note: in instantiation of
member function 'IFXAttributes<22>::IFXAttributes' requested here
IFXMeshAttributes eDirtyAttribs = CalculateDirtyAttribs(eAllAttribs);
^
/usr/include/string.h:82:7: note: 'memcpy' should be declared prior to the call site
void *memcpy(void *, const void *, size_t);
^
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:147:11: error: call to function
'memcmp' that is neither visible in the template definition nor found by argument-dependent
lookup
return (memcmp(flags, src.flags, sizeof(flags)) == 0);
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:944:20: note: in instantiation of
member function 'IFXAttributes<22>::operator==' requested here
if((eDirtyAttribs == eAllAttribs) && (eAllAttribs == IFXMeshAttributes(IFX_MESH_POSITION)))
^
/usr/include/string.h:81:6: note: 'memcmp' should be declared prior to the call site
int memcmp(const void *, const void *, size_t);
^
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:44:3: error: call to function
'memset' that is neither visible in the template definition nor found by argument-dependent
lookup
memset(flags, 0, sizeof(flags));
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:944:55: note: in instantiation of
member function 'IFXAttributes<22>::IFXAttributes' requested here
if((eDirtyAttribs == eAllAttribs) && (eAllAttribs == IFXMeshAttributes(IFX_MESH_POSITION)))
^
/usr/include/string.h:84:7: note: 'memset' should be declared prior to the call site
void *memset(void *, int, size_t);
^
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:54:3: error: call to function
'memset' that is neither visible in the template definition nor found by argument-dependent
lookup
memset(flags, 0, sizeof(flags));
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:1079:24: note: in instantiation of
member function 'IFXAttributes<22>::operator=' requested here
m_eInterleavedAttribs = 0;
^
/usr/include/string.h:84:7: note: 'memset' should be declared prior to the call site
void *memset(void *, int, size_t);
^
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:21:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.h:22:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMesh.h:26:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXMeshGroup.h:28:
In file included from /Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXEnums.h:28:
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Include/IFXAttributes.h:179:3: error: call to function
'memset' that is neither visible in the template definition nor found by argument-dependent
lookup
memset(flags, 0, sizeof(flags));
^
/Users/Matt/Desktop/u3d-1.2.852/RTL/Component/Mesh/CIFXMesh.cpp:1691:14: note: in instantiation of
member function 'IFXAttributes<22>::clear' requested here
eAllAttribs.clear();
^
/usr/include/string.h:84:7: note: 'memset' should be declared prior to the call site
void *memset(void *, int, size_t);
^
8 errors generated.
make: *** Error 1
make: *** Error 2
make: *** Error 2
I believe the compile error is due to changes in recent versions of gcc; see
http://gcc.gnu.org/gcc-4.3/porting_to.html
about "Header dependency cleanup." Basically, #include statements were removed from header files where they had been for centuries and this breaks pretty much any existing code that used to compile with previous versions of gcc. You need to find which header file is missing from where and add it.
In this case, I believe the missing header is string.h (Do a "man memset" to see what is needed.) Since this is C++, I added the line
in RTL/Component/include/IFXAttributes.h after which the compilation completes successfully.
However, when I try to run any of the produced executables (IDTFConverter, IDTFGen, HelloWorld) they all segfault. (Same result if I #include <string.h> instead of <cstring>.)
I am using gcc version 4.7.2 on Ubuntu 12.10.
If anybody else can make some more progress, please let us know.
Sorry, I should have mentioned that I tried to compile u3d-1.4.3
- Vassili
I'll try to reproduce the crash.
Is your system 32 or 64 bit?
It's a 32-bit system
> when I try to run any of the produced executables … they all segfault.
> I am using gcc version 4.7.2 on Ubuntu 12.10.
> It's a 32-bit system
Comment out the call to cpuid in IFXOSInitialize in RTL/Platform/Lin32/Common/IFXOSUtilities.cpp.
It is some asm mumbo-jumbo to determine at run time if CPU is capable of MMX or SSE.
If check is disabled and generic code is used instead of vector operations, there will be some performance loss, but likely unnoticeable one.
Report results.
I'll try to make a new version of u3d repack, with fixes for new compiler warnings and updated bundled libraries, some time soon.
Yes, that worked. I was able to create an executable IDTFConverter and install it, after which I could convert a file to .u3d and embed it into a PDF document. Everything looks good. Thank you.
I have put the recent changes discussed above plus some other minor fixes for compiler warnings into
http://www2.iaas.msu.ru/tmp/u3d/u3d-1.4.4.tar.gz
I tried building the vtkU3DExporterTest.
The build is fine but when I try to run it, it segmentation fault on Linux x64 (Ubuntu)
I am using u3d-1.4.4.tar.gz
Cheers
Try commenting out X3D export in vtkU3DExporterTest sources, it crashed for me recently.
X3D export is not required for U3D export, it is there just to have something to compare to.
If that does not help - report and I'll try to investigate.
Hi Michail,
Thanks for the info.
Commenting out the X3D stuff no longer crashes.
It runs and generate the test.u3d file, I embedded the test.u3d file in a PDF and it shows up fine.
However, I noticed the following errors when the vtk test program ends
X Error of failed request: GLXBadDrawable
Major opcode of failed request: 128 (GLX)
Minor opcode of failed request: 11 (X_GLXSwapBuffers)
Serial number of failed request: 92
Current serial number in output stream: 92
I thought you might like to know about that too.
Cheers
Looks like drawing error.
Try to disable on-screen drawing of the test scene to test that.
Someone using this code told me he had to update it to match VTK changes, but did not share results. May be some primitives I used in the test scene are obsolete or broken now.
If you are interested in 3D VTK export using FOSS tools and have time and knowledge of VTK necessary for co-developing/testing it, I can revisit the issue.
I do not use VTK now and make 3D PDFs with other tools.
I tried building the vtkU3DExporter on Windows 7, using the information that ran fine on Linux but no U3D files were generated.
I can put in sometime to help test/debug.
It would be easier if your source code is on GitHub and people can fork/submit-pull-request when the fixes are done.
I have to fix the CMakeLists.txt as it requires winmm.lib on Windows
I have to also modify the code as it requires decl export for the class.
Let me know how I can contribute the fixes to your code base.
Cheers
My current debugging indicates that the failure is in IFXCOMInitialize()
if( IFXSUCCESS(result) )
{
// IFXDEBUG_STARTUP();
result = IFXCOMInitialize();
}
printf("vtkU3DExporter 00003\n");
if( !IFXSUCCESS(result) )
return;
printf("vtkU3DExporter 00004\n");
I'll have time to hunt for bugs this weekend.
Do you have Windows 7 32 or 64 bit?
As to GitHub - as you can see from the amount of traffic on this forum, the demand was not-existent.
I found the problem. The CMakeLists.txt for u3d did not install to IFXCore.dll on Windows.
Once the installation is fixed, it runs fine.
The installation directory structure between Linux and Windows is different so that is a concern too and need to be address.
Cheers
I am on 64bit.
No worries about GitHub, what repo are you using to check-in your code ? Can you use SourceForge, will that cause confusion due to same name "U3D" ?
It must be already on sf as part of MathGL project.
Here it is -
https://sourceforge.net/p/mathgl/code/HEAD/tree/u3d/