※ ChatGPTを利用し、要約された質問です(原文:VC2005のDLLを6.0で呼び出すには)
VC2005のDLLを6.0で呼び出す方法についての質問
このQ&Aのポイント
VC2005のDLLを6.0で呼び出す方法について質問があります。
質問者はVC 2005 Pro Editionで作ったライブラリをVC6.0EnterPrize(SDK)で呼び出したいと考えていますが、エラーが出てしまっています。
質問者は定義ファイルを使わない形式のライブラリをどのように呼び出すか、また2005のライブラリを6.0で呼び出すことが可能かどうかを知りたいと考えています。
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から呼び出すことは可能ですか?
また呼び出す方法は?
すいませんがご回答をお願いします。
補足
ありがとうございます。 libをVC6.0で作ってみたりして試してみましたがやっぱりだめでした。 dllはお客さんからもらっているのでVC6.0で作り直してくれというのは難しくて。。。 VC 2005 Proを買おうかとはおもっているのですが、 Experss Editionを使ってみる限り、どうもstrcat辺りの関数が 使えなくなるようですね。 考えて使えば有益な関数なのにショックです。 Recourse.resもないようですし。。。