整理自:http://social.msdn.microsoft.com/Forums/zh-TW/230/thread/fdf1dba3-3804-4bb4-95c3-c54758fb3358
==============================================================
Q:
我有一份硬體廠商給的SDK,裡面有 xxxx.h 和 xxxx.lib 還有VC6.0的操作範例..
不過我目前要是使用C#來開發我的應用程式,我找了一下,C#似乎是無法直接使用lib,必須轉換成DLL使用。
我現在不知道如何轉換成標準的DLL。
感謝大家的幫忙
A:
如果原廠不提供DLL, 您就需要使用VC++建立DLL型態的專案, 在專案中呼叫廠商提供的LIB中的功能, 並在這個專案中引入必要的.H, 做好之後建置專案會得到DLL, 再把DLL拿給VB專案, 由VB程式透過DllImport引用
A:
請廠商提供DLL, 不然就自己使用VC++建一個使用LIB的DLL專案, 再把做好的DLL拿給C#使用
Q:
小弟現在遇到類似的問題,軟體廠商提供一組以C撰寫的API
但是小弟希望能夠以VB2005撰寫,請問該怎麼做呢?
A:
早期的 Link32.exe 其實可以將 lib 跟 dll 互轉,應該是 VC4 以前吧~
但是這邊後來發現有智慧財產權的問題,因為 lib 跟 dll 用途不同,是分別賣的,所以後來 link32.exe 就不能將這兩種格式互轉了。
請廠商提供是最快的,廠商要賺錢,通常解決方案都有了,只是會不會提供給你而已,沒有解決方案只是把客戶推給別人,所以問原始廠商比較快。
A:
如果您是要在VB.NET的程式中呼叫C函數, 可以使用平台呼叫的技巧, 請參考:
http://www.freevbcode.com/ShowCode.Asp?ID=2707
Q:
由於原始廠商不提供dll檔案,且依據您的範例
我查了msdn,DllImport屬性似乎沒有提到該如何引入.h與.lib,
那是否意味著無法直接引入呢?
A:
如果原廠不提供DLL, 您就需要使用VC++建立DLL型態的專案, 在專案中呼叫廠商提供的LIB中的功能, 並在這個專案中引入必要的.H, 做好之後建置專案會得到DLL, 再把DLL拿給VB專案, 由VB程式透過DllImport引用
S:
看來這是目前唯一的方法了...

本文解答了如何将C/C++的库文件(.lib)转换为DLL以便于C#和VB.NET等.NET Framework语言调用的问题。若原始厂商不提供DLL文件,则需要通过Visual C++创建一个DLL项目,引入必要的.H文件并链接到.lib文件,最终生成DLL供C#或VB.NET使用。
1万+

被折叠的 条评论
为什么被折叠?



