質問

Visual C 2008 Express を使用して、サードパーティ ソフトウェアを Linux から Windows に移植しています。

関数「wctype」でのみ問題が発生します。これは、%VCDIR%/include/wctype.h ファイルで次のように宣言されます。

 _MRTIMP2 wctype_t __cdecl wctype (const char *);

ただし、リンクしようとすると、次のエラーが発生します。

C:\test>cl test.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

test.c
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:test.exe
test.obj
test.obj : error LNK2019: unresolved external symbol _wctype referenced in function _main
test.exe : fatal error LNK1120: 1 unresolved externals

テストコードは次のとおりです。

#include <wctype.h>

int
main (void)
{
  return (int) wctype ("alpha");
}

エラー メッセージに示されているように、コードはコンパイルは正常ですが、リンクできません。

何をするか?私はこのソフトウェアの開発者ではないので、元の開発者を混乱させる可能性があるため、「wctype」関数を別の関数に置き換えたくありません。

ご辛抱いただきありがとうございます。

追伸また、Dependency Walker を使用して MSVCRT90.DLL ファイルのインポート テーブルを見てみましたが、「wctype」関数はありませんでした。

役に立ちましたか?

解決

これを試してみてください

cl test.c /link MSVCPRT.LIB

他のヒント

あなたがここに述べたようにlibcp.libとリンクする必要があります:

http://msdn.microsoft.com/ EN-US /ライブラリ/ aa246681(VS.60).aspxの

msvcprt.lib を使用する場合は、設定に応じて DLL を再配布する必要があります (例:MSVCP90.dll)。再配布したくない場合は、次のことを試してください。

cl test.c /link libcpmt.lib

リンク先のすべてのライブラリのリストはここにあります (下部をご覧ください)。 http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top