error LNK2019 未解決の外部シンボルを解決するには?

解決


mouse  2008-01-10 05:27:33  No: 67281

Gate_Keeper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl comopen(void)" (?comopen@@YAXXZ) が関数 _main で参照されました。

このようなエラーが出てしまいます。どのようにすればいいのか助言をお願いします。


επιστημη  URL  2008-01-10 09:35:11  No: 67282

エラーメッセージ"そのまんま"です。
関数 comopen がないのでリンクに失敗しています。
呼んでいるのにその実装を忘れてるのか、あるいはリンクすべきライブラリが足りません。


mouse  2008-01-10 19:39:40  No: 67283

返信ありがとうございます。

cppファイルで

#include "CommSet.h"
void comopen();
void main(){
・・・
comopen();
・・・

また、ヘッダーファイル内で

void comopen(char*,char*,char*,int,int);
void comopen(char *pComport, char *pBaudRate, char *pParity, int bytesize, int stopbits){
・・・

というようにしているので実装されていると考えているのですが何か足りないでしょうか?
また、リンクすべきライブラリというのはどのようにして調べたらいいのでしょうか?


ゴン  2008-01-10 19:59:56  No: 67284

エラーメッセージをよく読みましょう。

Gate_Keeper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl comopen(void)" (?comopen@@YAXXZ) が関数 _main で参照されました。

void __cdecl comopen(void)はvoid comopen()のことで、επιστημηさんの助言と合わせると、void comopen()が実装されていないということです。


tetrapod  2008-01-10 20:05:50  No: 67285

もっと補足するなら
void comopen(); と
void comopen(char*,char*,char*,int,int);
はまったく別物だということだ

> リンクすべきライブラリというのはどのようにして調べたらいいのでしょうか?
マニュアル読め、ちうことになるな。
誰が作ったかわからない void comopen(); の正体を知っているのは mouse 氏のみなので
どのマニュアルを読めばよいか判断できるのも mouse 氏のみ


Blue  2008-01-10 20:31:57  No: 67286

マルチ先
http://www.play21.jp/board/formz.cgi?action=res&resno=13241&page=&id=dixq&rln=13254
より
>void comopen(); 
の定義がないと思われる。


mouse  2008-01-10 21:00:20  No: 67287

cppファイル内で
void comopen();→void comopen(char*,char*,char*,int,int);
comopen();→void comopen(char*,char*,char*,int,int);
と変更することでコンパイルを通すことができました。
助言をしてくださったみなさま、ありがとうございました。


Blue  2008-01-10 21:02:28  No: 67288

>と変更することでコンパイルを通すことができました。
まちがっているとおもわれ。


επιστημη  2008-01-10 21:55:45  No: 67289

>と変更することでコンパイルを通すことができました。
通しただけとおもわれ。


mouse  2008-01-10 22:37:45  No: 67290

どの部分が間違っていると思われますか?
現在、実行すると
Debug Assertion Failed!

Program:...
File:fprintf.c
Line:55

Expression:(str!=NULL)

For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts.

というエラーが出てしまい、実行結果を見ることができないので、通すところまでしかできませんでした。


ww  2008-01-10 22:45:37  No: 67291

リンク先より。。。

/////<Gate_Keeper.cpp> 入退室システムのメイン制御(文字列の送信受信)///////

…閉じ込められないかねwww


επιστημη  URL  2008-01-10 22:52:13  No: 67292

> どの部分が間違っていると思われますか?

ソースの呈示もないのに"どの部分"と仰られましても、ねぇ。
Debug-modeで実行すればassert失敗地点までのcall-stackが追えるんじゃないすか?


yoh2  2008-01-11 06:54:43  No: 67293

> comopen();→void comopen(char*,char*,char*,int,int);
> と変更することでコンパイルを通すことができました。

これ、関数を呼び出しが関数宣言に変わってしまっています。
つまり、「comopen()を呼び出そうとしている」→「何もしない」と変化しています。
関数名から推測するに、comポートの準備ができていないためにエラーになっているのでは?


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

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






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