ios - 两次导入header : duplicate symbol for architecture x86_64
<p><blockquote>
<p>duplicate symbol _webViewManager in:
app/Build/Intermediates/app-name.build/Debug-iphonesimulator/app-name.build/Objects-normal/x86_64/PostsShowViewController.o
app/Build/Intermediates/app-name.build/Debug-iphonesimulator/app-name.build/Objects-normal/x86_64/FirstViewController.o
ld: 1 duplicate symbol for architecture x86_64 clang: error: linker
command failed with exit code 1 (use -v to see invocation)</p>
</blockquote>
<p>我在尝试编译时遇到上述错误。
当我尝试在两个不同的 ViewController 中导入一个名为 <code>WebViewManager.h</code> 的文件时,就会发生这种情况。</p>
<p><em>WebViewManager.h</em></p>
<pre><code>#import <UIKit/UIKit.h>
@interface WebViewManager : NSObject
@property (strong, nonatomic) UIWebView *webView;
+ (id)getUniqueWebViewManager: (UIViewController *)container;
- (void)loadUrlWithString: (NSString *)urlString;
- (void) removeWebViewFromContainer;
@end
</code></pre>
<p><em>FirstViewController.m</em></p>
<pre><code>#import "FirstViewController.h"
#import "PostsShowViewController.h"
#import "Constants.h"
#import "AppDelegate.h"
#import "WebViewManager.h"
</code></pre>
<p><em>PostsShowController.m</em></p>
<pre><code>#import "PostsShowViewController.h"
#import "FirstViewController.h"
#import "AppDelegate.h"
#import "WebViewManager.h"
</code></pre>
<p>同样,如果我在多个地方尝试 <code>#import "Constants.h"</code> 也会出现同样的错误。</p>
<p>编辑:</p>
<p><em>Constants.h</em></p>
<pre><code>NSString *BASE_URL = @"google.com";
</code></pre>
<p><strong>编辑2:</strong></p>
<p>WebViewManager 出现次数:</p>
<p><strong>FirstViewController.m</strong></p>
<pre><code>@implementation FirstViewController
WebViewManager *webViewManager;
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您忘记在头文件中使用 <code>extern</code>,因此每个包含 <code>Constants.h</code> 的实现文件都在声明自己的 <code>BASE_URL</实例</code>.</p>
<p>你想要:</p>
<pre><code>extern NSString *BASE_URL
</code></pre>
<p>这在 <code>Constants.m</code> 中:</p>
<pre><code>NSString *BASE_URL = @"google.com";
</code></pre>
<p>或者,您也可以在 <code>Constants.h</code> 中使用它:</p>
<pre><code>#define BASE_URL @"google.com"
</code></pre>
<p>忘记 <code>Constants.m</code>。</p>
<p><strike>但是我没有足够的信息告诉你为什么链接器提示 <code>webViewManager</code>。</strike></p>
<p>好的,第 2 部分:</p>
<p>问题是有多个名为 <code>webViewManager</code> 的全局符号,因为您错误地声明了它们。使用:</p>
<pre><code>@interface FirstViewController : UIViewController {
WebViewManager *_webViewManager;
}
</code></pre>
<p>(其他类也一样)。这使得它们<em>实例变量</em>,而不是全局变量。</p></p>
<p style="font-size: 20px;">关于ios - 两次导入header : duplicate symbol for architecture x86_64,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/32399668/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/32399668/
</a>
</p>
页:
[1]