DLLの作成方法について

[戻る]
マイケル 2008/07/13(日) 21:37:48
よろしくお願いします。
VS2005です
ダイナミック リンク ライブラリ(DLL)の基礎知識http://exlight.net/devel/windows
/dll/windll.html
を参考に、DLLの作成方法、使い方を学習しています
sub.dllは作成されているのですが

sub.c
warning C4273: 'sub' : dll リンクが一貫していません。
 'sub' の前の定義を確認してください

main_static.c
main_static.obj : error LNK2019: 未解決の外部シンボル __imp__sub が関数 _main で
参照されました。
MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関
数 ___tmainCRTStartup で参照されました。
fatal error LNK1120: 外部参照 2 が未解決です。

この様なエラーがでてしまいます、ご教示願います。


// main_static.c
#include <stdio.h>
#include <windows.h>

__declspec(dllimport) int sub(int);

int main(void)
{
    printf("main %d\n", sub(1));
    return 0;
}


// sub.c
#include <stdio.h>
#include <windows.h>

__declspec(dllimport) int sub(int);

int main(void)
{
    printf("main %d\n", sub(1));
    return 0;
}

// sub.h
#if !defined(_SUB_H_)
#define _SUB_H_

__declspec(dllimport) int sub(int arg);

#endif

επιστημη [HomePage] 2008/07/13(日) 21:45:46
sub.cのナカミがmainになってますけどー

マイケル 2008/07/13(日) 21:59:21
επιστημηさん、お世話になります。
失礼しました、誤記載です
// sub.c
#include <stdio.h>
#include "sub.h"
__declspec(dllexport) int sub(int arg)
{
    printf("sub %d\n", arg);
    return arg + 1;
}

επιστημη [HomePage] 2008/07/13(日) 22:28:28
何の問題もなくコンパイル/実行できましたよ。

cl -LD sub.c
cl main_static.c sub.lib

マイケル 2008/07/13(日) 22:40:55
お世話になります
>>cl -LD sub.c
>>cl main_static.c sub.lib
これなんですけど、コマンドライン(cmd.exe)からの、コンパイルですよね?
C:\直下に
sub.h
sub.c
main_static.c
これらのファイルを置いて上記の方法でコンパイルすると
'cl' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
となってしまいます・・・

επιστημη [HomePage] 2008/07/13(日) 22:44:36
Pathが通ってないんでしょうね。

マイケル 2008/07/13(日) 22:56:38
やっぱりそうですか・・・orz
JavaのコンパイラとIDEを、インストールしてから、VS2005の様子が
なんかおかしくなった気がしてました
Path=C:\Program Files\Microsoft Visual Studio 8\VC\bin
追加して再起動します

επιστημη [HomePage] 2008/07/13(日) 23:01:23
めんどくせーなー、
つ【http://cid-
07c558f8e11e708f.skydrive.live.com/self.aspx/WillBeRemovedSoon/dll.zip】

マイケル 2008/07/14(月) 16:05:31
[[解決]]
επιστημηさんThxです
DLさせて頂きました、動きますね?
どこの設定が違うのだろうと、小一時間・・・・
orz

古いスレッドには追加発言できません。