将c源代码转换为dll

时间:2011-04-25 13:52:52

标签: c dll linker-errors

我正在尝试运行使用C编写的代码,这是用于对话板dmv 960A 4T1pci。我试图将该代码转换为DLL但我面临的34个错误几乎相同,这里是它们的列表:

Linking...
   Creating library Debug/drivendll.lib and object Debug/drivendll.exp
drivendll.obj : error LNK2001: unresolved external symbol _sr_waitevt
drivendll.obj : error LNK2001: unresolved external symbol _gc_CCLibStatusEx
drivendll.obj : error LNK2001: unresolved external symbol _gc_Start
drivendll.obj : error LNK2001: unresolved external symbol _sr_setparm
drivendll.obj : error LNK2001: unresolved external symbol _gc_DropCall
drivendll.obj : error LNK2001: unresolved external symbol _gc_WaitCall
drivendll.obj : error LNK2001: unresolved external symbol _gc_ResetLineDev
drivendll.obj : error LNK2001: unresolved external symbol _gc_Close
drivendll.obj : error LNK2001: unresolved external symbol _gc_ResultInfo
drivendll.obj : error LNK2001: unresolved external symbol _gc_util_delete_parm_blk
drivendll.obj : error LNK2001: unresolved external symbol _gc_SetUserInfo
drivendll.obj : error LNK2001: unresolved external symbol _gc_util_insert_parm_val
drivendll.obj : error LNK2001: unresolved external symbol _gc_GetMetaEvent
drivendll.obj : error LNK2001: unresolved external symbol _gc_AlarmSourceObjectName
drivendll.obj : error LNK2001: unresolved external symbol _gc_AlarmSourceObjectID
drivendll.obj : error LNK2001: unresolved external symbol _gc_AlarmName
drivendll.obj : error LNK2001: unresolved external symbol _gc_AlarmNumber
drivendll.obj : error LNK2001: unresolved external symbol _gc_ReleaseCallEx
drivendll.obj : error LNK2001: unresolved external symbol _gc_AnswerCall
drivendll.obj : error LNK2001: unresolved external symbol _gc_AcceptCall
drivendll.obj : error LNK2001: unresolved external symbol _gc_GetCallInfo
drivendll.obj : error LNK2001: unresolved external symbol _gc_SetAlarmNotifyAll
drivendll.obj : error LNK2001: unresolved external symbol _gc_GetResourceH
drivendll.obj : error LNK2001: unresolved external symbol _gc_MakeCall
drivendll.obj : error LNK2001: unresolved external symbol _gc_OpenEx
drivendll.obj : error LNK2001: unresolved external symbol _gc_LoadDxParm
drivendll.obj : error LNK2001: unresolved external symbol __imp__inet_ntoa@4
drivendll.obj : error LNK2001: unresolved external symbol __imp__gethostbyname@4
drivendll.obj : error LNK2001: unresolved external symbol __imp__gethostname@8
drivendll.obj : error LNK2001: unresolved external symbol _gc_util_insert_parm_ref
drivendll.obj : error LNK2001: unresolved external symbol _gc_SetCallingNum
drivendll.obj : error LNK2001: unresolved external symbol _gc_ErrorInfo
drivendll.obj : error LNK2001: unresolved external symbol _gc_Stop
Debug/drivendll.dll : fatal error LNK1120: 33 unresolved externals
Error executing link.exe.

我知道这个列表很长,但是只有一件事情就是搞乱代码到处都是。我需要你们的紧急帮助。请不要让我失望,让我知道解决这个问题的任何解决方案或至少建议。

读者,我知道这不是对话论坛,但我正在寻求一些一般的帮助,但任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

<强>更新

您似乎正在使用以下库:

http://threebit.net/projects/jvr/download/

确保您链接到平台的相应库对象,如另一个答案中所述。有一个linux版本,一个Windows版本和一个用于java dev的jar。确保在链接器设置中包含正确的一个。例如,以下是我们在eclipse中如何做到这一点。

http://wiki.eclipse.org/CDT/User/FAQ#How_do_I_add_an_external_library_to_my_C.2B.2B_project.3F

原始答案*

“未解析的外部符号”表示在您的项目中,您需要和/或使用链接到某些库的类,而这些类未正确包含在您的项目中。无论您在makefile中使用哪种IDE,请确保已正确包含项目所需的任何库文件。

答案 1 :(得分:1)

您似乎没有使用正确的编译器。 DLL应仅适用于基于Windows的系统,并且编译器似乎找不到您正在使用的板上可用的方法和常量。