【发布时间】:2011-12-02 07:11:09
【问题描述】:
我一直希望在 Matlab 中使用 [这个漂亮的 C++ dll][1],因为我有一些现有的 Matlab 东西,我认为这些东西可以从这个库的功能中受益。但是,每当我运行此命令来加载库时:
loadlibrary('d3d9Callback.lib','d3d9Callback.h')
我收到大量关于 dll 中使用的类型存在的警告,以及大量语法错误,显然是由未知类型引起的。这是警告/错误的开始:
Warning: Warnings messages were produced while parsing. Check the functions you
intend to use for correctness. Warning text can be viewed using:
[notfound,warnings]=loadlibrary(...)
> In loadlibrary at 360
Error loading library intermediate output follows.
The actual error is at the end of this output.
*********
Type 'intCONSTDWORDPtr' was not found. Defaulting to type voidPtr.
Found on line 29 of input from line 28 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'HANDLE' was not found. Defaulting to type error.
Found on line 29 of input from line 28 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTDWORDPtr' was not found. Defaulting to type voidPtr.
Found on line 30 of input from line 29 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'HANDLE' was not found. Defaulting to type error.
Found on line 30 of input from line 29 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'D3DSURFACE_DESCPtr' was not found. Defaulting to type voidPtr.
Found on line 35 of input from line 34 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'BitmapPtr' was not found. Defaulting to type voidPtr.
Found on line 35 of input from line 34 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'HANDLE' was not found. Defaulting to type error.
Found on line 35 of input from line 34 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'BufferLockDataPtr' was not found. Defaulting to type voidPtr.
Found on line 36 of input from line 35 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'D3DVERTEXBUFFER_DESCPtr' was not found. Defaulting to type voidPtr.
Found on line 36 of input from line 35 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'BufferLockDataPtr' was not found. Defaulting to type voidPtr.
Found on line 37 of input from line 36 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'D3DINDEXBUFFER_DESCPtr' was not found. Defaulting to type voidPtr.
Found on line 37 of input from line 36 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'HANDLE' was not found. Defaulting to type error.
Found on line 39 of input from line 38 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'HANDLEPtr' was not found. Defaulting to type voidPtr.
Found on line 44 of input from line 43 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTD3DVIEWPORT9Ptr' was not found. Defaulting to type voidPtr.
Found on line 46 of input from line 45 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'D3DTRANSFORMSTATETYPE' was not found. Defaulting to type error.
Found on line 47 of input from line 46 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTD3DMATRIXPtr' was not found. Defaulting to type voidPtr.
Found on line 47 of input from line 46 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'D3DVERTEXELEMENT9Ptr' was not found. Defaulting to type voidPtr.
Found on line 49 of input from line 48 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'HANDLE' was not found. Defaulting to type error.
Found on line 51 of input from line 50 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTD3DLIGHT9Ptr' was not found. Defaulting to type voidPtr.
Found on line 54 of input from line 53 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'BOOL' was not found. Defaulting to type error.
Found on line 55 of input from line 54 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTD3DMATERIAL9Ptr' was not found. Defaulting to type voidPtr.
Found on line 57 of input from line 56 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'D3DRENDERSTATETYPE' was not found. Defaulting to type error.
Found on line 59 of input from line 58 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'D3DTEXTURESTAGESTATETYPE' was not found. Defaulting to type error.
Found on line 60 of input from line 59 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'HANDLE' was not found. Defaulting to type error.
Found on line 62 of input from line 61 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'HANDLE' was not found. Defaulting to type error.
Found on line 64 of input from line 63 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'HANDLE' was not found. Defaulting to type error.
Found on line 65 of input from line 64 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTBOOLPtr' was not found. Defaulting to type voidPtr.
Found on line 67 of input from line 66 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTfloatPtr' was not found. Defaulting to type voidPtr.
Found on line 68 of input from line 67 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTUINTPtr' was not found. Defaulting to type voidPtr.
Found on line 69 of input from line 68 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTBOOLPtr' was not found. Defaulting to type voidPtr.
Found on line 71 of input from line 70 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTfloatPtr' was not found. Defaulting to type voidPtr.
Found on line 72 of input from line 71 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTUINTPtr' was not found. Defaulting to type voidPtr.
Found on line 73 of input from line 72 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'HANDLE' was not found. Defaulting to type error.
Found on line 75 of input from line 74 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'D3DPRIMITIVETYPE' was not found. Defaulting to type error.
Found on line 80 of input from line 79 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'D3DPRIMITIVETYPE' was not found. Defaulting to type error.
Found on line 81 of input from line 80 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'D3DPRIMITIVETYPE' was not found. Defaulting to type error.
Found on line 82 of input from line 81 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'INT' was not found. Defaulting to type error.
Found on line 82 of input from line 81 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'D3DPRIMITIVETYPE' was not found. Defaulting to type error.
Found on line 83 of input from line 82 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTvoidPtr' was not found. Defaulting to type voidPtr.
Found on line 83 of input from line 82 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'D3DPRIMITIVETYPE' was not found. Defaulting to type error.
Found on line 84 of input from line 83 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTvoidPtr' was not found. Defaulting to type voidPtr.
Found on line 84 of input from line 83 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'D3DFORMAT' was not found. Defaulting to type error.
Found on line 84 of input from line 83 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTvoidPtr' was not found. Defaulting to type voidPtr.
Found on line 84 of input from line 83 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTRECTPtr' was not found. Defaulting to type voidPtr.
Found on line 89 of input from line 88 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTRECTPtr' was not found. Defaulting to type voidPtr.
Found on line 89 of input from line 88 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'intCONSTD3DRECTPtr' was not found. Defaulting to type voidPtr.
Found on line 90 of input from line 89 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Type 'D3DCOLOR' was not found. Defaulting to type error.
Found on line 90 of input from line 89 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Failed to parse type 'D3D9Base :: LPDIRECT3DDEVICE9 Device' original input 'D3D9Base :: LPDIRECT3DDEVICE9 Device '
Found on line 101 of input from line 100 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
Error parsing argument for function ReportCreateDevice function may be invalid.
Type 'ID3D9DeviceOverlayPtr' was not found. Defaulting to type voidPtr.
Found on line 101 of input from line 100 of file C:\\Users\\Steven\\Dropbox\\Stanford_SC2bot\\D3D9CallbackSC2\\Base\\d3d9Callback.h
*********
??? Error using ==> loadlibrary at 441
Building d3d9Callback_thunk_pcwin64 failed. Compiler output is:
cl -I"C:\Program Files\MATLAB\R2011a\extern\include" /Zp8 /W3 /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /nologo -I"C:\Users\Steven\Dropbox"
-I"C:\Users\Steven\Dropbox\Stanford_SC2bot\D3D9CallbackSC2\Base" "d3d9Callback_thunk_pcwin64.c" -LD -Fe"d3d9Callback_thunk_pcwin64.dll"
d3d9Callback_thunk_pcwin64.c
C:\Users\Steven\Dropbox\Stanford_SC2bot\D3D9CallbackSC2\Base\d3d9Callback.h(28) : error C2146: syntax error : missing ')' before identifier 'DWORD'
C:\Users\Steven\Dropbox\Stanford_SC2bot\D3D9CallbackSC2\Base\d3d9Callback.h(28) : error C2061: syntax error : identifier 'DWORD'
C:\Users\Steven\Dropbox\Stanford_SC2bot\D3D9CallbackSC2\Base\d3d9Callback.h(28) : error C2059: syntax error : ';'
现在我检查了 Matlab 论坛并尝试了通常的嫌疑人(设置 c++ 编译器,确保它不是 32 位 Matlab 上的 64 位 dll,并确保 dll 是“extern c”)。我开始认为问题在于 dll 大量从 directx 库以及来自同一网站的附加 dll 中提取。也许 Matlab 不知道它们,这导致了“类型未知”的问题?这是我唯一能想到的,但这对我来说没有意义,因为正在加载的库已经编译成 dll。
无论如何,我对处理 dll 还是很陌生,所以我的直觉可能会偏离。关于为什么 Matlab 无法识别类型以及如何解决问题的任何想法?
【问题讨论】:
-
是否应该有 DLL 的链接?
-
这里是一个可以下载构建 dll 的项目的站点的链接:graphics.stanford.edu/~mdfisher/GameAIs.html