To compile the VideoCapture module

  • Thread starter Jérôme Le Bougeant
  • Start date
J

Jérôme Le Bougeant

Hello (and sorry for my English),



I downloaded the VideoCapture module on the
http://videocapture.sourceforge.net/ site. I tested it with a webcam and
that functions.

Now I want to compile his file .cpp (vidcap.cpp). Thereafter, the idea is to
be able to modify the code to include my own modifications.

For the moment I only try to compile, but does not arrive :(

I will try to pose my problem :

First of all I am under Windows xp because I must use DirectX. I use the
MinGW compiler. I use following script (setup.py) to be able to compile :




nomModule = 'vidcap'

from distutils.core import setup, Extension

setup(name = nomModule, ext_modules = [ Extension(nomModule, sources = [
nomModule+'.cpp'],\

include_dirs=["C:\DX90SDK\Include","C:\DX90SDK\Samples\C++\DirectShow\BaseClasses"],\

library_dirs=["C:\Python23\libs","C:\DX90SDK\Lib","C:\Python23\Enthought\MingW\lib"])
])

The include_dirs enable me to indicate the access path has my .h that I
need. And library_dirs in theory the libraries which I need (I say in theory
because I do not have the impression that it takes into account, but we will
return later).

I try so the first compilation with : python setup.py build

I have a few errors

I try to resolve them

Here the modifications which I have of bringing :

In strmif.h:

line 6164 : replace #ifndef _WINGDI_ by #ifndef _WINGDI_H

line 20557 : Add EXTERN_GUID definition just before first EXTERN_GUID():

#ifndef EXTERN_GUID

#define EXTERN_GUID(g,l1,s1,s2,c1,c2,c3,c4,c5,c6,c7,c8)
DEFINE_GUID(g,l1,s1,s2,c1,c2,c3,c4,c5,c6,c7,c8)

#endif

line 28736 : Fix the tagVMRGUID struct (GUID -> ::GUID)

::GUID *pGUID;

::GUID GUID;

Put UrlMon.h in the file include of DX90SDK (recover it in Microsoft
Platform SDK) in the same way for MsXml.h.

Then to define uCLSSPEC and QUERYCONTEXT, I have includes their definition
directly in my file .cpp :

//--------------------------------------------------------------------------------------

// definitions recuperées de c:\Program Files\Microsoft Plateform
SDK\include\WTypes.h

typedef struct tagCSPLATFORM

{

DWORD dwPlatformId;

DWORD dwVersionHi;

DWORD dwVersionLo;

DWORD dwProcessorArch;

} CSPLATFORM;

#ifndef _LCID_DEFINED

#define _LCID_DEFINED

typedef DWORD LCID;

#endif // !_LCID_DEFINED

typedef struct tagQUERYCONTEXT

{

DWORD dwContext;

CSPLATFORM Platform;

LCID Locale;

DWORD dwVersionHi;

DWORD dwVersionLo;

} QUERYCONTEXT;

typedef WCHAR OLECHAR;

typedef OLECHAR *LPOLESTR;

typedef struct __MIDL___MIDL_itf_wtypes_0003_0001

{

DWORD tyspec;

union __MIDL___MIDL_itf_wtypes_0003_0005

{

CLSID clsid;

LPOLESTR pFileExt;

LPOLESTR pMimeType;

LPOLESTR pProgId;

LPOLESTR pFileName;

struct

{

LPOLESTR pPackageName;

GUID PolicyId;

} ByName;

struct

{

GUID ObjectId;

GUID PolicyId;

} ByObjectId;

} tagged_union;

} uCLSSPEC;

//--------------------------------------------------------------------------------------

Last thing modified in vidcap.cpp :

line 774 : /*statichere*/ PyTypeObject Dev_Type = {


Comment out statichere, because it was already declared in extern.



After all these modifications, I compile again and no errors but...

Here what I obtain with compilation :


running install

running build

running build_ext

building 'vidcap' extension

C:\Python23\Enthought\MingW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\DX90SDK\Include
-IC:\DX

90SDK\Samples\C++\DirectShow\BaseClasses -Ic:\Python23\include -Ic:\Python23\PC
-c vidcap.cpp -

o build\temp.win32-2.3\Release\vidcap.o

In file included from C:/DX90SDK/Include/dshow.h:46,

from vidcap.cpp:24:

C:/DX90SDK/Include/strmif.h:2: warning: ignoring #pragma warning

In file included from C:/DX90SDK/Include/dshow.h:46,

from vidcap.cpp:24:

C:/DX90SDK/Include/strmif.h:877: warning: ignoring #pragma warning

C:/DX90SDK/Include/strmif.h:878: warning: ignoring #pragma warning

C:/DX90SDK/Include/strmif.h:30645: warning: ignoring #pragma warning

In file included from C:/DX90SDK/Include/dshow.h:49,

from vidcap.cpp:24:

C:/DX90SDK/Include/control.h:2: warning: ignoring #pragma warning

In file included from vidcap.cpp:73:

C:/DX90SDK/Include/qedit.h:2: warning: ignoring #pragma warning

In file included from C:/DX90SDK/Include/qedit.h:492,

from vidcap.cpp:73:

C:/DX90SDK/Include/dxtrans.h:2: warning: ignoring #pragma warning

In file included from C:/DX90SDK/Include/d3d.h:189,

from C:/DX90SDK/Include/dxtrans.h:278,

from C:/DX90SDK/Include/qedit.h:492,

from vidcap.cpp:73:

C:/DX90SDK/Include/d3dtypes.h:26: warning: ignoring #pragma warning

C:/DX90SDK/Include/d3dtypes.h:2116: warning: ignoring #pragma warning

In file included from C:/DX90SDK/Include/dxtrans.h:280,

from C:/DX90SDK/Include/qedit.h:492,

from vidcap.cpp:73:

C:/DX90SDK/Include/urlmon.h:17: warning: ignoring #pragma warning

In file included from C:/DX90SDK/Include/urlmon.h:278,

from C:/DX90SDK/Include/dxtrans.h:280,

from C:/DX90SDK/Include/qedit.h:492,

from vidcap.cpp:73:

C:/DX90SDK/Include/msxml.h:17: warning: ignoring #pragma warning

In file included from C:/DX90SDK/Include/dxtrans.h:280,

from C:/DX90SDK/Include/qedit.h:492,

from vidcap.cpp:73:

C:/DX90SDK/Include/urlmon.h:301: warning: ignoring #pragma comment

In file included from C:/DX90SDK/Include/qedit.h:493,

from vidcap.cpp:73:

C:/DX90SDK/Include/amstream.h:2: warning: ignoring #pragma warning

In file included from C:/DX90SDK/Include/amstream.h:107,

from C:/DX90SDK/Include/qedit.h:493,

from vidcap.cpp:73:

C:/DX90SDK/Include/mmstream.h:2: warning: ignoring #pragma warning

In file included from C:/DX90SDK/Include/amstream.h:108,

from C:/DX90SDK/Include/qedit.h:493,

from vidcap.cpp:73:

C:/DX90SDK/Include/strmif.h:2: warning: ignoring #pragma warning

In file included from C:/DX90SDK/Include/amstream.h:122,

from C:/DX90SDK/Include/qedit.h:493,

from vidcap.cpp:73:

C:/DX90SDK/Include/mmstream.h:2: warning: ignoring #pragma warning

In file included from C:/DX90SDK/Include/amstream.h:123,

from C:/DX90SDK/Include/qedit.h:493,

from vidcap.cpp:73:

C:/DX90SDK/Include/ddstream.h:2: warning: ignoring #pragma warning

In file included from C:/DX90SDK/Include/ddstream.h:59,

from C:/DX90SDK/Include/amstream.h:123,

from C:/DX90SDK/Include/qedit.h:493,

from vidcap.cpp:73:

C:/DX90SDK/Include/mmstream.h:2: warning: ignoring #pragma warning

In file included from C:/DX90SDK/Include/amstream.h:124,

from C:/DX90SDK/Include/qedit.h:493,

from vidcap.cpp:73:

C:/DX90SDK/Include/austream.h:2: warning: ignoring #pragma warning

In file included from C:/DX90SDK/Include/austream.h:71,

from C:/DX90SDK/Include/amstream.h:124,

from C:/DX90SDK/Include/qedit.h:493,

from vidcap.cpp:73:

C:/DX90SDK/Include/mmstream.h:2: warning: ignoring #pragma warning

writing build\temp.win32-2.3\Release\vidcap.def

cc -mno-cygwin -shared -s build\temp.win32-2.3\Release\vidcap.o
build\temp.win32-2.3\Release\vidcap.def -LC:\Python23\libs -LC:\DX90SDK\Lib
-LC:\Python23\Enthought\MingW\lib -Lc:\Python23\libs -Lc:\Python23\PCBuild -lpython23
-o build\lib.win32-2.3\vidcap.pyd

error: command 'cc' failed: No such file or directory

I obtain warning, but I think that we can be to ignore them.

(#pragma warning( disable: 4049 ) /* more than 64k source lines */)

Then my problem it is that it does not create my module .pyd. Maybe linker
error ? But I don't see why that command 'cc' failed ! (I use gcc)

I think the part C:\Python23\Enthought\MingW\bin\g in beginning line was
disappeared !

I try to run all this command line, i.e. :

C:\Python23\Enthought\MingW\bin\gcc -mno-cygwin -shared -s
build\temp.win32-2.3\Release\vidcap.o
build\temp.win32-2.3\Release\vidcap.def -LC:\Python23\libs -LC:\DX90SDK\Lib
-LC:\Python23\Enthought\MingW\lib -Lc:\Python23\libs -Lc:\Python23\PCBuild -lpython23
-o build\lib.win32-2.3\vidcap.pyd


Here a part of result :


build\temp.win32-2.3\Release\vidcap.o(.text+0x570):vidcap.cpp: undefined
reference to `IID_IGraphBuilder'

build\temp.win32-2.3\Release\vidcap.o(.text+0x579):vidcap.cpp: undefined
reference to `CLSID_FilterGraph'

build\temp.win32-2.3\Release\vidcap.o(.text+0x57e):vidcap.cpp: undefined
reference to `CoCreateInstance@20'

build\temp.win32-2.3\Release\vidcap.o(.text+0x59e):vidcap.cpp: undefined
reference to `IID_ICaptureGraphBuilder2'

build\temp.win32-2.3\Release\vidcap.o(.text+0x5a7):vidcap.cpp: undefined
reference to `CLSID_CaptureGraphBuilder2'

build\temp.win32-2.3\Release\vidcap.o(.text+0x5ac):vidcap.cpp: undefined
reference to `CoCreateInstance@20'

....


I think it is a problem of linker error. However I show the right directory
to recover libraries
(-LC:\Python23\libs -LC:\DX90SDK\Lib -LC:\Python23\Enthought\MingW\lib), but
apparently does not take into account.





In short, how to make ?

If I did not take the right method of resolution of my problem, how then I
do to proceed ?




Thanks for any ideas.







Ps : I also wanted to compile it under dev-cpp to see. Result, same problem,
but only 5 or 6 linker errors.

I include in the parameters of linker :

C:/Python23/libs/libpython23.a

C:/DX90SDK/Lib/amstrmid.lib

C:/Python23/Enthought/MingW/lib/libole32.a

C:/Python23/Enthought/MingW/lib/liboleaut32.a







Regards,




Jérôme
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,961
Messages
2,570,131
Members
46,689
Latest member
liammiller

Latest Threads

Top