工程源码
https://download.csdn.net/download/csdn_z_s/1042776
开发环境
操作系统: win7 64位旗舰版
Java语言开发环境: Eclipse3.7(jdk1.6u45)
C/C++语言开发环境: cn_visual_studio_2010_ultimate_x86
VB语言开发环境: VB6.0
前言
我们的项目主要以java为编写语言, 涉及到调用本地设备的底层模块使用的C/C++语言, java和C/C++之间利用JNI技术进行调用. 底层模块在和本地设备进行对接的方式之一是集成DLL(动态链接库)的形式.
前段时间项目中需要集成第三方厂家(Y厂)的DLL(YC.DLL), Y厂的DLL是使用VB编写的, 编译环境是VB6.0. 拿到DLL后, 先用Dependency Walker看了下内部的接口名称, 就四个:
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
果然, 这就是传说中的activeX, 从网上的资料看, VB6.0编译出的dll均属于activeX控件.
至于DLL, OCX, activeX, COM组件概念上的区别, 网上都有很好的资料.
小插曲
刚拿到Y厂的YC.DLL后, 按照下一节的步骤, 在编译YC.DLL后, 编译器会提示”无法加载的动态库类型”, 而Y厂并没有相关的C/C++技术支持可以提供C/C++对他们的DLL的调用方式. 虽然自己之前也写过ocx控件, 将自己的ocx控件按照下一节的步骤, 编译一切正常. 但自己没有过在VB6.0编译器上通过VB语言进行开发的经验, 这让开发进度一再停滞.
后来偶然间在网页上查到一个在VS2010上引用VB6.0编译的dll的帖子, 截图如下:
按照图片所说的步骤, 我的vs2010竟然真的可以引用Y厂的dll.
关于vb6controls.reg可以参考:
REGEDIT
HKEY_CLASSES_ROOT\Licenses = Licensing:Copying the keys may be a violation of established copyrights.
// Masked Edit Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\BC96F860-9928-11cf-8AFA-00AA00C00905= mmimfflflmqmlfffrlnmofhfkgrlmmfmqkqj
// Chart Control 6.0 (OLEDB) license key
HKEY_CLASSES_ROOT\Licenses\12B142A4-BD51-11d1-8C08-0000F8754DA1= aadhgafabafajhchnbchehfambfbbachmfmb
// Common Dialog Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\4D553650-6ABE-11cf-8ADB-00AA00C00905= gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj
// ADO Data Control 6.0 (OLEDB) license key
HKEY_CLASSES_ROOT\Licenses\C4145310-469C-11d1-B182-00A0C922E820= konhqhioohihphkouimonhqhvnwiqhhhnjti
// Common Controls-3 6.0 license key
HKEY_CLASSES_ROOT\Licenses\38911DA0-E448-11D0-84A3-00DD01104159= mcpckchcdchjcjcclidcgcgchdqdcjhcojpd
// Windows Common Controls-2 5.0 (SP2)license key
HKEY_CLASSES_ROOT\Licenses\9E799BF1-8817-11cf-958F-0020AFC28C3B= uqpqnqkjujkjjjjqwktjrjkjtkupsjnjtoun
// Windows Common Controls license key
HKEY_CLASSES_ROOT\Licenses\57CBF9E0-6AA7-11cf-8ADB-00AA00C00905= aahakhchghkhfhaamghhbhbhkbpgfhahlfle
// Data Bound Grid Control 5.0(SP3) licensekey
HKEY_CLASSES_ROOT\Licenses\556C75F1-EFBC-11CF-B9F3-00A0247033C4= xybiedobrqsprbijaegcbislrsiucfjdhisl
// Data Bound List Controls 6.0 license key
HKEY_CLASSES_ROOT\Licenses\096EFC40-6ABF-11cf-850C-08002B30345D= knsgigmnmngnmnigthmgpninrmumhgkgrlrk
// Internet Transfer Control 6.0 licensekey
HKEY_CLASSES_ROOT\Licenses\78E1BDD1-9941-11cf-9756-00AA00C00908= yjrjvqkjlqqjnqkjvprqsjnjvkuknjpjtoun
// Multimedia Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\B1EFCCF0-6AC1-11cf-8ADB-00AA00C00905= qqkjvqpqmqjjpqjjvpqqkqmqvkypoqjquoun
// Chart Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\7C35CA30-D112-11cf-8E72-00A0C90F26F8= whmhmhohmhiorhkouimhihihwiwinhlosmsl
// Windows Common Controls-2 6.0 licensekey
HKEY_CLASSES_ROOT\Licenses\4F86BADF-9F77-11d1-B1B7-0000F8753F5D= iplpwpnippopupiivjrioppisjsjlpiiokuj
// Windows Common Controls 6.0 license key
HKEY_CLASSES_ROOT\Licenses\ED4B87C4-9F76-11d1-8BF7-0000F8754DA1= knlggnmntgggrninthpgmnngrhqhnnjnslsh
// Comm Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905= kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
// DataGrid Control 6.0 (OLEDB) license key
HKEY_CLASSES_ROOT\Licenses\CDE57A55-8B86-11D0-b3C6-00A0C90AEA82= ekpkhddkjkekpdjkqemkfkldoeoefkfdjfqe
// DataList Control 6.0 (OLEDB) license key
HKEY_CLASSES_ROOT\Licenses\A133F000-CCB0-11d0-A316-00AA00688B10= cibbcimbpihbbbbbnhdbeidiocmcbbdbgdoc
// DBWin license key
HKEY_CLASSES_ROOT\Licenses\D015B071-D2ED-11d0-A31A-00AA00688B10= gjdcfjpcmjicjcdcoihcechjlioiccechepd
// MSDBRPT license key
HKEY_CLASSES_ROOT\Licenses\9DF1A470-BA8E-11D0-849C-00A0C90DC8A9= cchcqjejhcgcqcfjpdfcdjkckiqikchcojpd
// FlexGrid Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\72E67120-5959-11cf-91F6-C2863C385E30= ibcbbbebqbdbciebmcobmbhifcmciibblgmf
// MAPI Controls 6.0 license key
HKEY_CLASSES_ROOT\Licenses\899B3E80-6AC6-11cf-8ADB-00AA00C00905= wjsjjjlqmjpjrjjjvpqqkqmqukypoqjquoun
// MSRDO 2.0 license key
HKEY_CLASSES_ROOT\Licenses\B1692F60-23B0-11D0-8E95-00A0C90F26F8= mjjjccncgjijrcfjpdfjfcejpdkdkcgjojpd
// RemoteData Control 6.0 license key
HKEY_CLASSES_ROOT\Licenses\43478d75-78e0-11cf-8e78-00a0d100038e= imshohohphlmnhimuinmphmmuiminhlmsmsl
// Windo