我有以下问题:我有一个 64 位版本的 matlab 2011b。我需要从 DLL 调用一些函数。一段时间前,这一直在使用 Visual Studio 2010 的 prof 版本。
现在我想让它与 express 版本一起运行。因此,我安装了 Visual Studio C++ 2010 Express 和 Win SDK 7.1。现在我给 matlab 命令mex -setup
并选择 VC++ 编译器。好的!
如果我想用 加载 dll 本身loadlibrary
,我会遇到很多错误。类似于:构建 libFramework_thunk_pcwin64 失败。编译器输出为:
cl -I"C:\MATLAB\R2011b\extern\include" /W3 /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /nologo -I"U:\Framework\Framework\so" -I"U:\Framework\Framework\so" "libFramework_thunk_pcwin64.c" -LD -Fe"libFramework_thunk_pcwin64.dll" libFramework_thunk_pcwin64.c
Bibliothek "libFramework_thunk_pcwin64.lib" und Objekt "libFramework_thunk_pcwin64.exp" werden erstellt.
LIBCMT.lib(dllcrt0.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetCurrentThreadId@0" in Funktion "__CRT_INIT@12".
LIBCMT.lib(tidtable.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetCurrentThreadId@0".
LIBCMT.lib(gs_support.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetCurrentThreadId@0".
LIBCMT.lib(onexit.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__DecodePointer@4".
LIBCMT.lib(crtmboxw.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DecodePointer@4" in Funktion "___crtMessageBoxW".
<snip>
libFramework_thunk_pcwin64.dll : fatal error LNK1120: 65 nicht aufgelöste externe Verweise.
Error in load_Framework (line 4)
loadlibrary 'libFramework' 'Shaddower_C.h'
不幸的是,当我使用德语软件时,这些错误是德语的。(松散的)翻译是,在不同的功能中存在指向不可解决的外部符号的链接。如果您知道如何将语言更改为英语,我可以为您提供确切的输出。
当我用谷歌搜索时,我发现我尝试的所有函数都来自标准库,我只是找到了一些 rundll32.dll 但也许还有其他链接。
事实上,编译器似乎无法访问默认的 windows dll(或 sdk)。
你能告诉我这里出了什么问题吗?
PS:对于那些了解德语的人,请参阅http://www.gomatlab.de/viewtopic,p,91154.html#91154我在纯 matlab 论坛拳头上发帖,但我猜这是一个 VC++ 问题我也在这里发帖.