DLLで未定義エラー – プログラミング – Home

通知
すべてクリア

[解決済] DLLで未定義エラー


ザンマ
 ザンマ
(@ザンマ)
ゲスト
結合: 19年前
投稿: 3
Topic starter  

DLLを作ってダイアログアプリで呼び出そうとしてますが、
エラーが出てうまくいきません。
なぜか引数なしではうまくいくのにありだとうまくいきません。
どうすればOKになりますか?

○問題なしで呼び出せる
DLL側
__declspec(dllexport) int test(void);

呼び出し側
__declspec(dllimport) int test(void);

×エラーになる
DLL側
__declspec(dllexport) int test(HWND hWnd, LPWSTR pszItemID, int nItemCnt);

呼び出し側
__declspec(dllimport) int test(HWND hWnd, LPWSTR pszItemID, int nItemCnt);

エラー内容
error LNK2019: 未解決の外部シンボル
__declspec(dllimport) int __cdecl test(struct HWND__ *,wchar_t *,int) (__imp_?
test@@YAHPAUHWND__@@PA_WH@Z)
が関数 protected: virtual int __thiscall CXXXDlg::OnInitDialog(void) (?
OnInitDialog@CXXXDlg@@MAEHXZ) で参照されました。


引用未解決
トピックタグ
REE
 REE
(@REE)
ゲスト
結合: 23年前
投稿: 240
 

・実はDLLはC++でなくCで書いている
・libファイルを更新せずに古いものを使用している。(DLLのプロジェクトからコピーし
ていない)


返信引用
ザンマ
 ザンマ
(@ザンマ)
ゲスト
結合: 19年前
投稿: 3
Topic starter  

レスありがとうございます。

・実はDLLはC++でなくCで書いている
DLLプロジェクト内にはcppファイル4、cファイル1個あります。
しかし、呼び出す関数が書かれてるのはcppファイルです。

・libファイルを更新せずに古いものを使用している。(DLLのプロジェクトからコピーし
ていない)
libの日時を確認しましたがちゃんと新しいものでした。

うーん。引数をint1個にしたらエラーでないし、
HWNDとかWCHARがだめなんでしょうか…


返信引用
ザンマ
 ザンマ
(@ザンマ)
ゲスト
結合: 19年前
投稿: 3
Topic starter  

色々考えてみて
extern Cとかを何気なくつけたら
うまくいきました。


返信引用
REE
 REE
(@REE)
ゲスト
結合: 23年前
投稿: 240
 

cファイルで、
__declspec(dllexport) int test(HWND hWnd, LPWSTR pszItemID, int nItemCnt);
を書いてあるヘッダファイルをincludeしていると、
コンパイル順とかで、export関数のリンケージがCとC++の区別がつかなくなるのかも・・


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました