LoadLibrary

解決


haru  2007-03-14 22:05:09  No: 64653

Visual C++ 2005 Express Edition マージ形式で下記のエラーが出ます。
始めたばかりでヘルプを見ても分かりませんでした。
どの様に修正すれば良いか教えて頂けると幸いです。

error C2664: 'LoadLibraryW' : 1 番目の引数を 'const char [16]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)

int main(int argc, char* argv[])
{
  HMODULE hDll;
  BYTE data = 0xFF;

  if ((hDll = LoadLibrary( "c:\\haru.dll")) != nullptr) {
         ....以下略


Blue  2007-03-14 22:09:53  No: 64654

>マージ形式

>if ((hDll = LoadLibrary( "c:\\haru.dll")) != nullptr) {
if ((hDll = LoadLibrary( TEXT("c:\\haru.dll"))) != NULL) {

参考
http://www.ruche-home.net/program/tips/tchar.php

nullptrは/clrオプションがついているときだけ使ったほうがいい(というかついてなしで使えるのかな?)
と思います。


haru  2007-03-14 23:18:42  No: 64655

ありがとうございます。

マージ形式  ===>  マネージ形式の間違いでした。

if ((hDll = LoadLibrary( TEXT("c:\\haru.dll"))) != NULL) {  は
エラーが出なくなりましたが、今度は
int main(int argc, char* argv[])  でエラーがでましたが
他で定義されている...様なので  main2 に変えたら
エラーは無くなりました。

質問事項のエラーは出なくなりました。  大変ありがとうございました。


yoh2  2007-03-15 09:24:36  No: 64656

ちょっと気になることが。

> int main(int argc, char* argv[])  でエラーがでましたが
> 他で定義されている...様なので  main2 に変えたら
> エラーは無くなりました。

それで、main2()は呼ばれていますか?
単に使われない関数を定義してしまっている気がします。


haru  2007-03-15 16:13:41  No: 64657

yoh2 さん、ありがとうございます。
はい、button1_Click  で呼び出す様に修正して
動作テストしました。

現在はまだ部分的なコードがビルド出来るかとかの勉強中でして
趣味のソフトとして動かすまでにはまだまだ修行が必要です。

Blue さん、ご指導、大変ありがとうございました。

今後ともよろしくお願いします。


Blue  2007-03-15 18:07:24  No: 64658

ちなみに、CLRなら
簡単な引数であれば DllImport を使った方が楽チンかもしれません。
(〜.libでリンクできればそれが一番簡単だけど。)


haru  2007-03-15 18:41:32  No: 64659

Blue  さん、ありがとうございます。
#include で試しても見たのですがC++のバージョン違いなのか
エラー続出でしたので止めて  LoadLibrary  を試していました。


Blue  2007-03-15 18:51:19  No: 64660

>#include で試しても見たのですがC++のバージョン違いなのか
>エラー続出でしたので止めて
そういうことでしたか。

ということで、やはりDllImportを使ったほうがいいかも。

文字列を扱わない(かつ__stdcall)場合

[DllImport("XXXXX.dll")]
static int add(int x, int y);

という記述をするだけで使えるようになります。


haru  2007-03-15 19:33:38  No: 64661

ありがとうございます。
一応は先に頂いた回答で動作していますが、いずれ
[DllImport("XXXXX.dll")]  の勉強させて頂きます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加