<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>IDE on 代码学习站</title>
        <link>https://a6233.com/tags/ide/</link>
        <description>Recent content in IDE on 代码学习站</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Fri, 20 Jun 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://a6233.com/tags/ide/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>CLion 运行报错解决</title>
        <link>https://a6233.com/posts/clion-%E8%BF%90%E8%A1%8C%E6%8A%A5%E9%94%99%E8%A7%A3%E5%86%B3/</link>
        <pubDate>Fri, 20 Jun 2025 00:00:00 +0000</pubDate>
        
        <guid>https://a6233.com/posts/clion-%E8%BF%90%E8%A1%8C%E6%8A%A5%E9%94%99%E8%A7%A3%E5%86%B3/</guid>
        <description>&lt;p&gt;代码正确，但是一直提示错误&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;undefined reference to `PrintHandler::PrintHandler(Looper*)&amp;#39;
collect2.exe: error: ld returned 1 exit status
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;无意中发现自己运行的是 main.cpp 而不是整个项目，运行整个项目就会正常了。&lt;/p&gt;
&lt;p&gt;具体原因见 AI&lt;/p&gt;
&lt;p&gt;这是一个 &lt;strong&gt;CLion 或 CMake 配置相关的问题&lt;/strong&gt;，不是代码逻辑问题，而是&lt;strong&gt;你在运行 &lt;code&gt;main.cpp&lt;/code&gt; 文件单独作为“单文件运行”时，编译器没有正确链接整个项目的所有 &lt;code&gt;.cpp&lt;/code&gt; 文件&lt;/strong&gt;（例如 &lt;code&gt;Looper.cpp&lt;/code&gt;、&lt;code&gt;PrintHandler.cpp&lt;/code&gt; 等），从而导致：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;undefined reference to `Looper::postMessage(...)`
undefined reference to `vtable for PrintHandler`
...
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id=&#34;-原因详解&#34;&gt;✅ 原因详解
&lt;/h2&gt;&lt;p&gt;在 &lt;strong&gt;CLion 中点击右键运行 &lt;code&gt;main.cpp&lt;/code&gt; 文件&lt;/strong&gt; 时：&lt;/p&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;它会临时生成一个只编译 &lt;code&gt;main.cpp&lt;/code&gt; 的目标，没有链接你项目中定义的其他源文件（&lt;code&gt;.cpp&lt;/code&gt;），所以报链接错误。&lt;/p&gt;
&lt;p&gt;而你点击的是：&lt;/p&gt;
&lt;h3 id=&#34;-右键-maincpp--run-maincpp&#34;&gt;❌ &lt;code&gt;右键 main.cpp → Run main.cpp&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;只运行单文件，不会编译整个项目。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-正确做法&#34;&gt;✅ 正确做法
&lt;/h2&gt;&lt;p&gt;请始终使用：&lt;/p&gt;
&lt;h3 id=&#34;-run-employeesystem-或-run-your_target_name&#34;&gt;✅ &lt;code&gt;Run &#39;EmployeeSystem&#39;&lt;/code&gt; 或 &lt;code&gt;Run &#39;&amp;lt;your_target_name&amp;gt;&#39;&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;也就是你在 &lt;code&gt;CMakeLists.txt&lt;/code&gt; 中通过 &lt;code&gt;add_executable()&lt;/code&gt; 定义的那个目标，例如：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;add_executable(EmployeeSystem
    main.cpp
    Looper.cpp
    Message.cpp
    PrintHandler.cpp
    ...
)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在 CLion 里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;点击右上角运行配置的下拉按钮，选择 &lt;code&gt;EmployeeSystem&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;或者点绿色小锤子和绿色三角形按钮来 &lt;code&gt;Build&lt;/code&gt; / &lt;code&gt;Run&lt;/code&gt; 项目&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-避免误操作建议&#34;&gt;✅ 避免误操作建议
&lt;/h2&gt;&lt;p&gt;你可以设置默认只运行 CMake 目标：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;打开 &lt;code&gt;Run → Edit Configurations&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;确保你运行的是 &lt;code&gt;CMake Application&lt;/code&gt; 类型（不是 &lt;code&gt;main.cpp&lt;/code&gt;）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;删除 &lt;code&gt;main.cpp&lt;/code&gt; 的运行配置（避免误点）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-总结&#34;&gt;✅ 总结
&lt;/h2&gt;&lt;p&gt;操作后果✅ 运行整个项目（CMake目标）正常链接所有模块❌ 只运行 main.cpp缺少链接，报错&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;你项目现在已经没问题了，只是 CLion 使用方式上的误区。后续只运行项目名对应的目标就不会出错了 ✅&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
