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) {
....以下略
>マージ形式
?
>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オプションがついているときだけ使ったほうがいい(というかついてなしで使えるのかな?)
と思います。
ありがとうございます。
マージ形式 ===> マネージ形式の間違いでした。
if ((hDll = LoadLibrary( TEXT("c:\\haru.dll"))) != NULL) { は
エラーが出なくなりましたが、今度は
int main(int argc, char* argv[]) でエラーがでましたが
他で定義されている...様なので main2 に変えたら
エラーは無くなりました。
質問事項のエラーは出なくなりました。 大変ありがとうございました。
ちょっと気になることが。
> int main(int argc, char* argv[]) でエラーがでましたが
> 他で定義されている...様なので main2 に変えたら
> エラーは無くなりました。
それで、main2()は呼ばれていますか?
単に使われない関数を定義してしまっている気がします。
yoh2 さん、ありがとうございます。
はい、button1_Click で呼び出す様に修正して
動作テストしました。
現在はまだ部分的なコードがビルド出来るかとかの勉強中でして
趣味のソフトとして動かすまでにはまだまだ修行が必要です。
Blue さん、ご指導、大変ありがとうございました。
今後ともよろしくお願いします。
ちなみに、CLRなら
簡単な引数であれば DllImport を使った方が楽チンかもしれません。
(〜.libでリンクできればそれが一番簡単だけど。)
Blue さん、ありがとうございます。
#include で試しても見たのですがC++のバージョン違いなのか
エラー続出でしたので止めて LoadLibrary を試していました。
>#include で試しても見たのですがC++のバージョン違いなのか
>エラー続出でしたので止めて
そういうことでしたか。
ということで、やはりDllImportを使ったほうがいいかも。
文字列を扱わない(かつ__stdcall)場合
[DllImport("XXXXX.dll")]
static int add(int x, int y);
という記述をするだけで使えるようになります。
ありがとうございます。
一応は先に頂いた回答で動作していますが、いずれ
[DllImport("XXXXX.dll")] の勉強させて頂きます。
ツイート | ![]() |