命令行编译链接,出现LNK2019错误,怎样解决?
2005-03-27 22:57
896 查看
| |||||||
| |||||||
在visual studio环境下编译链接通过,但我在命令行模式下连接出现如下错误: /out:test01.exe test01.obj test01.obj : error LNK2019: 无法解析的外部符号 __imp__MessageBoxA@16 ,该符号在 函数 _MessageBoxPrintf 中被引用 test01.obj : error LNK2019: 无法解析的外部符号 __imp__GetSystemMetrics@4 ,该符 号在函数 _WinMain@16 中被引用 test01.exe : fatal error LNK1120: 2 个无法解析的外部命令 请问我如何确定连接的参数才能正确链接????? 下述是我在msdn查到的相关资料: 无法解析的外部符号“symbol”,该符号在函数“function”中被引用 在 function 中找到了未定义的外部符号 (symbol)。若要解决此错误,请提供符号定义或移除引用它的代码。 请看下面的示例: extern int i; extern void g(); void f() { i++; g(); } int main() { } 如果在生成中包含的某个文件中没有定义 i 和 g,链接器将生成 LNK2019。可以添加这些定义,方法是将包含这些定义的源代码文件包括为编译的一部分。或者可以将包含这些定义的 .obj 或 .lib 文件传递给链接器。 对于从早期版本升级到当前版本的 C++ 项目,如果定义了 __UNICODE 并且入口点为 WinMain,需要将入口点函数的名称更改为 _tWinMain 或 _tmain。 导致 LNK2019 的常见问题有: 符号声明包含拼写错误,以致于符号声明与符号定义不同。 使用了一个函数,但其参数的类型或数量与函数定义不匹配。 函数声明使用和函数定义使用中的调用约定(__cdecl、__stdcall 或__fastcall)不同。 符号定义在编译为 C 程序的文件中,而符号是在 C++ 文件中不带 extern "C" 修饰符声明的。在此情况下,请修改声明,例如不是使用: extern int i; extern void g(); 而使用: extern "C" int i; extern "C" void g(); 同样,如果在将由 C 程序使用的 C++ 文件中定义符号,请在定义中使用 extern "C"。 符号定义为静态,但稍后在文件外部被引用。 没有定义静态类成员。例如,应单独定义下面类声明中的成员变量 si: #include <stdio.h> struct X { static int si; }; // int X::si = 0; // uncomment this line to resolve void main() { X *px = new X[2]; printf("/n%d",px[0].si); // LNK2019 } /verbose 链接器选项帮助您查看链接器引用的文件。DUMPBIN 实用工具的 /EXPORT 和 /SYMBOLS 选项还可以帮助您查看 dll 和对象/库文件中定义的符号。 | |||||||
|
<!--
google_ad_client = "pub-3274810212853675";
google_ad_width = 160;
google_ad_height = 90;
google_ad_format = "160x90_0ads_al_s";
google_ad_channel ="";
//-->
</script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script><script language="javascript" src="http://www.ask321.com/asrep/record.php?rep=v&tv=1111906177&id=166&nav=msie&asn=0&wsn=0&p=http%3A//www.ask321.com/ask26/how189374.htm&ref=http%3A//www.baidu.com/s%3Flm%3D0%26si%3D%26rn%3D10%26ie%3Dgb2312%26ct%3D0%26wd%3D%255Ftmain+WinMain%26pn%3D10%26cl%3D3" type="text/javascript">
</script>
相关文章推荐
- 用MFC编程编译时出现LNK2019的错误,解决办法
- 解决windows mobile下的编译错误error LNK2019: unresolved external symbol
- 编译和链接 - 解决出现的LNK2005“符号已定义”错误 2
- Qt Creator 编译 ROS 包出现链接错误解决办法
- VS2008(VC6)出现如下链接错误的解决方法uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsign
- 项目添加UNICODE支持时,出现链接错误error LNK2019: 无法解析的外部符号 _WinMain
- 编译和链接 - 解决出现的LNK2005“符号已定义”错误 3
- VS2008(VC6)出现如下链接错误的解决方法uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsign
- 在 VS 中编译项目时出现 error LNK2005 链接错误的解决办法
- vs2008编译时出现问题解决方法:MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16
- [转]vc编译链接错误--LNK2001,LNK2019,
- eVC编译时,出现corelibc.lib(pegwmain.obj) : error LNK2019解决办法
- 编译出现的错误- error LNK2019: 无法解析的外部符号 _GetProcessMemoryInfo@12
- 编译和链接 - 解决出现的LNK2005“符号已定义”错误 4
- 在VS2012中创建一个MFC动态链接项目(.dll)后,编译出现一大堆莫名其妙的错误的解决方法
- 一个链接error LNK2019错误的解决方法
- cmd命令行执行java程序的编译和执行的方法及可能出现找不到或无法加载主类的错误的解决
- [转]在vs2008上编译获取cpu代码出现的错误- error LNK2019: 无法解析的外部符号 _GetProcessMemoryInfo@12
- VS2005(VC6)出现如下链接错误的解决方法uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsign
- Qt 编译时出现“-1: error: LNK2019: unresolved external symbol "public: void __thiscall M”错误