VB编译标准DLL

cklxh 2013-09-12 02:34:45
http://webservices.ctocio.com.cn/net/308/9415308.shtml


我按照这个来做了,可是到了最后一步编译。提示:
d:\Program Files (x86)\Microsoft Visual Studio\VB98>link2.exe "D:\abc\Class1.obj" "D:\abc\Module1.obj" "D:\abc\Project1.obj" "d:\Program Files (x86)\Microsoft Visual Studio\VB98\VBAEXE6.LIB" /ENTRY:__vbaS /EXPORT:mm /EXPORT:mathadd /EXPORT:rit /OUT:"D:\abc\ProjectOK1.dll" /BASE:0x11000000 /SUBSYSTEM:WINDOWS,4.0 /VERS
Microsoft (R) Incremental Linker Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

LINK2 : warning LNK4044: unrecognized option "VERS"; ignored
Project1.obj : warning LNK4104: export of symbol "DllUnregisterServer" should be PRIVATE
Project1.obj : warning LNK4104: export of symbol "DllGetClassObject" should be PRIVATE
Project1.obj : warning LNK4104: export of symbol "DllRegisterServer" should be P
RIVATE
Project1.obj : warning LNK4104: export of symbol "DllCanUnloadNow" should be PRIVATE
Project1.obj : error LNK2001: unresolved external symbol mathadd
Project1.obj : error LNK2001: unresolved external symbol mm
Project1.obj : error LNK2001: unresolved external symbol rit
D:\abc\ProjectOK1.lib : fatal error LNK1120: 3 unresolved externals
LINK2 : fatal error LNK1141: failure during build of exports file


这是为什么啊?
...全文
661 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
FlyGhost 2014-06-11
  • 打赏
  • 举报
回复
还能问吗?我用vb编译了一个标准dll。在xp下可以正常调用,vb、vc都可以调用,但在64位win7下,用vc调用的会报错,老马有遇到过这种情况吗?咋整? 注:是vc6和vc2010的都试过,64位win7下失败,xp下正常。vb按标准dll来调用,在64位win7下也能正常运行
嗷嗷叫的老马 2013-09-20
  • 打赏
  • 举报
回复
ActiveX DLL也是标准DLL啊,无非是调用的方式不同
bcrun 2013-09-18
  • 打赏
  • 举报
回复
楼主如果还处在这个阶段,“你完全照他的例子来做,没有 mathadd、mm、rit 这三个函数,当然就出了3个 error(错误) 了”,那搞这个东西确实比较困难了,尤其是在需要处理非VB程序调用你的“标准DLL”的时候。
舉杯邀明月 2013-09-18
  • 打赏
  • 举报
回复
我觉得用VB6来搞这种所谓的“标准DLL”,没多大意思的。 并且,这个DLL实质上还是ActiveX DLL。
舉杯邀明月 2013-09-15
  • 打赏
  • 举报
回复
其实用他这个方法,我觉得那个“假 Link.exe”应该这样做好些: 新建一个 标准EXE工程。 移除 Form1(不用保存它)。 然后添加一个标准模块,加入下面这段代码:
Private Sub Main()
   Open "CmdLine.txt" For Output As #1
   Print #1, VBA.Command$
   Close
   MsgBox "现在可以拷贝OBJ文件了!", vbInformation
End Sub
然后编译成 Link.exe ,照他说的方法替换文件。 这样,在编译DLL文件时,把VB6所在目录内的 CmdLine.txt 打开,就能看到 用 /EXPORT:函数名 把函数列表加上(可以有几个),再全部复制下来,作为Link2.exe 的参数就行了。 只是他这种方法,用起来很麻烦,还不如用老马他们的那个“函数添加大师”。
舉杯邀明月 2013-09-15
  • 打赏
  • 举报
回复
我看了下,那个 /EXPORT 应该就是“导出函数”。 你完全照他的例子来做,没有 mathadd、mm、rit 这三个函数,当然就出了3个 error(错误) 了。 只要有error ,链接就不能成功。 但是 warning(警告) 基本是可以不管的。 如果你按他说的例子做,应该删除这几个参数: /EXPORT:mm /EXPORT:mathadd /EXPORT:rit 但是要增加这个: /EXPORT:fun1 /EXPORT:fun2 这样就成功了。
现在还是人类 2013-09-15
  • 打赏
  • 举报
回复
用正确的东西干理所当然的事情会比你这样少遇到很多麻烦。

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧