中国开发网: 论坛: Delphi/BCB: 贴子 123135
pcplayer
在Delphi 2005 里引用Assembly 要注意!
前两天在 VS2003 里,自己做一个Assembly,然后在一个新的工程里使用这个Assembly,很轻松地在新工程里加入对那个Assembly的DLL文件的引用后,就能直接在里面 using 那个DLL里的class了。

今天想在DELPHI2005里试一下,结果居然浪费了2小时!

先用delphi 2005 NEW了一个Library,Build成了一个DLL,然后new了一个新project,在里面也同样把这个DLL加入了工程的引用里去。然后在uses里声明那个DLL里的单元test,结果是画红线,告诉我找不到test.pas。

我以为是我的语法有错误,查HELP,查不到DELPHI关于如何使用Assembly的文字,查GOOGLE也查不到。

唯一的收获是从GOOGLE查到BORLAND的官方站上一篇讲 Namespace 的文章,里面提到,用DELPHI做Assembly的话,一定要用Package,而不要用library。

OK,我改为new一个Package。DELPHI除了给出这个Package的工程文件,什么都不给。自己去New了一个Class,得到一个有Class框架的文件。在里面写了一个public的函数,Build,通过,得到一个DLL。

回到我的那个引用这个DLL的测试程式,还是在uses里引用这个单元的地方画红线,说找不到那个test.pas。

前后查了2小时的GOOGLE,找不到一篇文章讲应该如何做才对。

最后,我也不用DLL了,直接把那个Assembly工程里包含了那个测试类的PAS单元加进这个工程,当然能用了。

我都想放弃在Delphi2005里使用Assembly了。干脆还是在SOURCE上做CLASS算了。

最后,最后,经过MSN上一个朋友的提醒,突然想起会不会是测试DLL的工程需要引用DLL里引用过的工程?

把DLL工程打开,看看里面引用了些什么东西,都抄下来,到测试DLL的工程里,把那些东西都加上去,然后在uses里写上:test,哈,居然不画红线了。

然后,可以RUN了。调用里面的class的一个test function,也能得到正确的结果了。

回想当时在VS 2003里引用一个Assembly,没那么麻烦啊。难道是碰巧那个测试Assembly的工程里已把Assembly里引用到的工程都刚好全引用了?

结论:要在Delphi2005里使用一个外部的Assembly,一定要在工程里将Assembly引用到的东西都加到工程的引用里去。

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录