プロが教える店舗&オフィスのセキュリティ対策術

VC 2005 Pro Editionで作ったライブラリ(ヘッダ、lib、dll)を頂きました。
 
 頂いたDLLの形式は定義ファイル.defを使わない形式、declspec(dllexport)を使う形式の方です。

 呼び出し側はVC6.0EnterPrize(SDK)を使います。
(諸事情により6.0以上にUPすることは不可能)
  
 まず、静的リンクをし、関数を呼び出してみました。
 (設定のリンクよりlibをリンクさせ、ヘッダをインクルードして)
 すると以下のメッセージが出てしまいます。

リンク中...
Dialog1.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) void
__cdecl Init(unsigned char *,unsigned char *,unsigned char *,unsigned
char *)" (__imp_?Init_Card@@YAXPAE000@Z)" は未解決です
Debug/CardMake.exe : fatal error LNK1120: 外部参照 1 が未解決です

link.exe の実行エラー
 
 色々やってみましたが、このエラーから回避できませんでした。

 ヘッダ自体に

#ifdef _USRDLL
#define DLL_PORT __declspec(dllexport)
#else
#define DLL_PORT __declspec(dllimport)
#endif
 
 の宣言があるので、別に特別なことをしなくても、大丈夫そうなのですが、何故か出来ません。

 次に動的リンクを行っていました。
 するとLoadLibraryでエラーになり、GetLastErrrorで14001(エラーメッセージはつかめず)が返ってきました。
(色々調べたところ定義ファイルがないと動的リンクはできないようですね)
 
 というわけでにっちもさっちも行かなくなった状況です。


 そこでご質問です。
(1)定義ファイルを使わない形式のライブラリ(暗示的に定義されているもの)はどのように呼び出させばよいでしょうか?
(2)2005のライブラリを6.0から呼び出すことは可能ですか?
 また呼び出す方法は?

 すいませんがご回答をお願いします。

A 回答 (1件)

やり方は有ってそうですね。



http://hp.vector.co.jp/authors/VA023539/tips/dll …

やはり、VC 2005というVC6.0より後に出た開発環境で出来たものをリンクするのが駄目そうな・・・。

DLL部分の環境貰って来て、DLLもVC6.0環境で作るか、実行環境かDLL渡してVC 2005 Pro Editionで呼び出し部分作ってもらうか?な気はしますけど。

この回答への補足

ありがとうございます。

libをVC6.0で作ってみたりして試してみましたがやっぱりだめでした。

dllはお客さんからもらっているのでVC6.0で作り直してくれというのは難しくて。。。

VC 2005 Proを買おうかとはおもっているのですが、
Experss Editionを使ってみる限り、どうもstrcat辺りの関数が
使えなくなるようですね。
考えて使えば有益な関数なのにショックです。
Recourse.resもないようですし。。。

補足日時:2006/12/12 22:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!