সুইফ্ট সংকলক ত্রুটি: "ফ্রেমওয়ার্ক মডিউলের অভ্যন্তরে নন-মডিউলার শিরোনাম"


204

এখন আমি আমার ওবিজেসি কাঠামোটি সুইফটে স্থানান্তর করতে চাই এবং আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

include of non-modular header inside framework module 'SOGraphDB'

উল্লেখগুলি একটি শিরোলেখ ফাইলের সাথে থাকে যা কেবলমাত্র একটি প্রোটোকল সংজ্ঞায়িত করে এবং আমি এই শিরোনাম ফাইলটি কিছু শ্রেণিতে এই প্রোটোকলটি ব্যবহার করতে ব্যবহার করি।

এটি মডিউল বৈশিষ্ট্যের সাথে সম্পর্কিত বলে মনে হচ্ছে তবে এটি ঠিক করার উপায়টি এখনই পরিষ্কার নয়, আপনি কি কোনও সমাধান জানেন?

হালনাগাদ:

এটি একটি সুইফ্ট সংকলক ত্রুটি।

আপডেট 2:

একটি দ্রুত স্থিরকরণ (তবে মূল কারণটি সমাধান করছে না) নীচের সেটিংসটি হ্যাঁতে সেট করতে হবে: CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES


3
দেখে মনে হচ্ছে "CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES"
স্টিফান

1
কেউ কি এটি দেখেছেন যেগুলি সর্বজনীন এবং মডুলার অন্তর্ভুক্ত রয়েছে? : আমি একটি ভ্যানিলা (cocoapods) প্রকল্পের সঙ্গে এই দেখতে github.com/CocoaPods/CocoaPods/issues/3092 এবং dropbox.com/s/trhe5vwhzoa9bf5/...
ক্রিস Conover

কেউ কি কোনও দ্রুত স্ক্রিপ্ট তৈরি করেছেন যা এটিকে স্বয়ংক্রিয়ভাবে সক্ষম করে?
ফতুহোকু

@ ফাতুহোকু হ্যাঁ

এই সমাধানগুলির কোনওটিই আমার পক্ষে কাজ করেনি, দেখে মনে হচ্ছে এটি আমার ক্ষেত্রে বোল্টস ra ফ্রেমওয়ার্কের সংঘর্ষ। এটি মুছে ফেলা সমস্যার সমাধান করেছে: stackoverflow.com/a/33114309/3324388
আগ্রাসী

উত্তর:


316

আপনার শিরোনাম পাবলিক?

প্রকল্প এক্সপ্লোরার মধ্যে শিরোনাম ফাইল নির্বাচন করুন। তারপরে এক্সকোডের ডানদিকে বিভাগে, আপনি লক্ষ্য করবেন যে লক্ষ্যটির পাশে একটি ড্রপডাউন রয়েছে। "প্রকল্প" থেকে "পাবলিক" এ পরিবর্তন করুন। এটি আমার পক্ষে কাজ করেছে।

পাবলিক শিরোনাম


আমি এই উত্তরটি গ্রহণ করি এমনকি আমি যা বলেছিলাম তেমন একই।
স্টেফান

আপনি আপনার কাঠামোর শিরোনাম নির্মাণের পর্যায়েও যেতে পারেন এবং দ্রুত দেখতে পারেন কোন শিরোনামগুলি পাবলিক, প্রকল্প এবং ব্যক্তিগত।
হোসে ইবানেজ

আমি এখানে আসার আগে এক ঘন্টারও বেশি সময় ধরে এটি নিয়ে লড়াই করেছি বলে এই সহজ কাজটি সম্ভবত সমাধান হতে পারে বলে আমি মনে করি না। দেখুন এবং দেখুন, এটি হ'ল সমাধানটি ছিল এবং তাত্ক্ষণিকভাবে কাজ করেছিল।
টিএমসি

1
এবং যদি আমি এই শিরোনামগুলি অভ্যন্তরীণ হতে চাই ?
রাফেল

2
এটি আমার সমস্যাও সমাধান করে! আমার ক্ষেত্রে, আমার একটি পড যা অন্য পোডের উপর নির্ভর করে মডুলার সমস্যার কারণে এটি আমদানি করতে পারে না। সুতরাং আমি পাবলিক মোড ব্যবহার করে কিছু শিরোনামকে অন্য পোডের লক্ষ্য হিসাবে অন্তর্ভুক্ত করেছি। এবং এটি সমস্যার সমাধান!
চেন লি ইওং

135

এটি একটি প্রত্যাশিত সংকলক আচরণ এবং খুব ভাল কারণে।

আমি মনে করি যে বেশিরভাগ লোকেরা এই ইস্যুগুলিতে দৌড়াদৌড়ি Application Targetকরছেন Framework Targetএবং তারা সি এবং অবজেক্টিভ সি হেডারগুলিকে কাঠামোর ছাতার শিরোনামে যুক্ত করা শুরু করার পরে এপ্লিকেশনের ব্রিজিং শিরোনামের মতো আচরণ করবে বলে প্রত্যাশা করে যা ভিন্ন আচরণ করে। ছাতা শিরোনামটি আসলে মিশ্র সুইফ্ট, আইজেক্ট-সি ফ্রেমওয়ার্কের জন্য মনোনীত করা হয়েছে এবং এর উদ্দেশ্যটি আপনার কাঠামোর উদ্দেশ্য-সি বা সি-র মধ্যে যে বহিরাগত বিশ্বের এপিআইগুলিকে প্রকাশ করছে। এর অর্থ আমরা সেখানে যে শিরোনাম রেখেছি তা জনসাধারণের সুযোগের মধ্যে থাকা উচিত।

এটি এমন কোনও স্থান হিসাবে ব্যবহার করা উচিত নয় যা উদ্দেশ্যমূলক-সি / সি শিরোনামগুলি প্রকাশ করে যা আপনার কাঠামোর সুইফ্ট কোডটিতে আপনার কাঠামোর অংশ নয়। কারণ সেক্ষেত্রে এই শিরোনামগুলি আমাদের ফ্রেমওয়ার্ক মডিউলটির অংশ হিসাবে বহিরাগতের কাছেও প্রকাশিত হবে, যা প্রায়শই আমরা যা করতে চাই না কেননা এটি পরিমিতি ভঙ্গ করে। (এবং ঠিক এই কারণেই ফ্রেমওয়ার্ক মডিউলগুলিতে নন-মডিউলার কোনও ডিফল্ট অন্তর্ভুক্ত করার অনুমতি দেয় )

আপনার ফ্রেমওয়ার্কের সুইফ্ট কোডটিতে অবজেক্টিভ সি / সি লাইব্রেরিটি প্রকাশ করার জন্য, আমাদের যেমন লাইব্রেরির জন্য একটি পৃথক সুইফ্ট মডিউলটি সংজ্ঞায়িত করা উচিত। তারপরে একটি স্ট্যান্ডার্ড সুইফ্ট import YourLegacyLibraryব্যবহার করা যেতে পারে।

আমি এটি কিছু সাধারণ দৃশ্যে প্রদর্শন libxml2করতে পারি: আমাদের কাঠামোটিতে এম্বেড করা।

1. আপনার প্রথমে একটি module.modulemapফাইল তৈরি করা দরকার যা এইভাবে দেখাবে:

ওএসএক্স কাঠামোর জন্য:

module SwiftLibXML2 [system] {
  header "/usr/include/libxml2/libxml/xpath.h"
  export *
}

আইওএস কাঠামোর জন্য:

module SwiftLibXML2 [system] {
  header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/libxml2/libxml/xpath.h"
  export *
}

কেবল এটিই হ'ল এটি হেডার এবং অন্য কোনও শিরোনামগুলিকে আপ করে যা এটি সুইফ্ট মডিউলের অভ্যন্তরে উল্লেখ করে, যাতে সুইফ্টটি তখন এই সি ইন্টারফেসগুলির জন্য সুইফ্ট বাইন্ডিংগুলি তৈরি করতে সক্ষম হবে।

২. তারপরে আপনার এক্সকোড প্রকল্প ডিরেক্টরিতে একটি ফোল্ডার তৈরি করুন SwiftLibXML2এবং এই মডিউলটিকে সেখানে রাখুন mod

3. ইন সেটিংস বিল্ড , অ্যাড $(SDKROOT)/usr/include/libxml2করতে শিরোলেখ অনুসন্ধান পথ

4. ইন সেটিংস বিল্ড , অ্যাড $(SRCROOT)/SwiftLibXML2করার আমদানি পথ

5. অধীনে প্রকল্পের সাধারণ ট্যাব, যোগ libxml2.tbdকরার লিঙ্কড অবকাঠামো ও লাইব্রেরি

এখন আপনি এই মডিউলটি যেখানে প্রয়োজন তা আমদানি করুন:

import SwiftLibXML2

(আপনি যদি আরও সম্পূর্ণ মডিউলটি দেখতে চান তবে ম্যাপের উদাহরণ হিসাবে, আমি ডারউইনের মডিউলটি উল্লেখ করতে পরামর্শ দেব mod আধুনিক ম্যাপে /usr/include/module.modulemap, আপনাকে সেখানে যাওয়ার জন্য এক্সকোড কমান্ড-লাইন সরঞ্জাম ইনস্টল করতে হবে, রেফারেন্স মিস / ইউএস / ওএস এক্স এল ক্যাপিটনে অন্তর্ভুক্ত থাকতে হবে )


1
ফাইলের নামটি অবচয়module.map করা হয়েছে, এটির নামকরণ করা উচিত module.modulemap clang.llvm.org/docs/Modules.html#attributes
Hyperbole

import SwiftLibXML2উদ্দেশ্য-সি-তে কীভাবে ? ধন্যবাদ!
Itachi

অন্য কোনও আপত্তি-সি আমদানির মতো: # আমদানি <libxML / xpath.h> তবে নিশ্চিত করুন যে আপনি পদক্ষেপগুলি 3-5 করেছেন।
এএম্বিয়েন্টলাইট

আমরা এটি করেছি, তবে তারপরে বিল্ড আর্টিক্টটি মেশিনগুলির মধ্যে স্থানান্তরিত করা যায় না: অবজেক্টিভ সি (উপ) মডিউলটি আপাতভাবে নিখুঁত পাথ ব্যবহার করে সংযুক্ত করা হয়েছে, সংকলনের সময় ত্রুটি ঘটায়, বলুন, এমন একটি অ্যাপ্লিকেশন যা আপনার পাঠানো ফ্রেমওয়ার্কটি ব্যবহার করে।
রাফেল

ত্রুটিটি সম্ভবত আপনার বিল্ড প্রক্রিয়াটির সাথে নির্দিষ্ট, এটি কেবলমাত্র একটি মডিউল সংজ্ঞা যাতে মডিউলগুলি সমর্থন করে এমন এলভিএম ভাষাগুলি অন্যদের সাথে বাধা দিতে পারে, আমি মনে করি না এটি নিজেই আপনার বিল্ড আর্টফিটগুলিকে প্রভাবিত করতে পারে, আমি সম্প্রদায় আমাকে সংশোধন করতে পারে যদি আমি আমি ভুল
পরিবেষ্টনীয়

55

দ্রুত ফিক্সটি কীভাবে স্বয়ংক্রিয়ভাবে প্রয়োগ করা যায় সেজন্য এখানে আপনাকে Pods.xcodeprojপ্রত্যেকের পরে ম্যানুয়ালি পরিবর্তন করতে হবে না pod install

আপনার পোডফিলের শেষে এই স্নিপেটটি যুক্ত করুন:

post_install do |installer|
  installer.pods_project.build_configuration_list.build_configurations.each do |configuration|
    configuration.build_settings['CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES'] = 'YES'
  end
end

29

আমার জন্য সমাধানটি লক্ষ্য-> বিল্ড সেটিংস-> অ ফ্রেডওয়ার্ক মডিউলগুলিতে নন-মডিউলারের অন্তর্ভুক্ত রাখার অনুমতি দিন হ্যাঁ!


এখানে কোকোপডসের সাথেও কাজ করেছেন। পড ইনস্টল করার পরে অন্য উত্তর থেকে যাদু করার দরকার নেই
ব্রেইন্রেইন করুন

3
আমি এই পদক্ষেপটি করেছি .. এটি কিছুক্ষণ কাজ করেছে .. এবং এখন এটি কাজ করছে না ... আমি পড-ইনস্টল পদক্ষেপটিও অন্তর্ভুক্ত করেছি। তবে এটি এখন আবার ব্যর্থ হচ্ছে। আমার অন্য কিছু যাচাই করা উচিত? শিরোনামগুলি সর্বজনীনতে পরিবর্তনের বিকল্প হিসাবে আমি গুগলমোবাইলএডস.ফ্রেমওয়ার্ককে দেখছি না।
মাইকেল রোউ

এটি আমার পক্ষে কাজ করে না। এখনও পার্সের সাথে ত্রুটি পাচ্ছে।
এক্সকোড

এটি পরিবর্তন করার জন্য আমাকে এক্সকোড পুনরায় চালু করতে হয়েছিল।
জন ফোলার 18

1
এই সেটিংটি পরিবর্তনের প্রভাব কী?
এনআর 5

15

আমি মনে করি আমি এটি প্রায় পেয়েছিলাম। আমার কিছু মডেল কোড রয়েছে যা ফ্রেমওয়ার্কে sqlite3 ব্যবহার করে। আমার ক্ষেত্রে, অপরাধীটি <sqlite3.h>।

সমস্যাটি ছিল আমার মডিউল / মডিউল.এইচ শিরোনামে, আমি একটি পাবলিক শিরোনাম আমদানি করে যা <sqlite3.h> আমদানি করে। সমাধানটি ছিল সমস্ত স্ক্লাইট3_এক্সএক্সএক্সএক্স প্রকারগুলি লুকানো এবং নিশ্চিত করা যে সেগুলি কোনও পাবলিকের মধ্যে দৃশ্যমান নয় h স্ক্লাইট 3 এর সমস্ত সরাসরি উল্লেখগুলি ব্যক্তিগত বা প্রকল্পের দৃশ্যমানতা তৈরি করা হয়েছিল। উদাহরণস্বরূপ, আমার একটি সার্বজনীন সিঙ্গলটন ছিল যা এতে কিছু স্ক্লাইট 3_ স্টেমটি পয়েন্টার রেখেছিল। আমি সেগুলি একটি পৃথক শ্রেণিতে স্থানান্তরিত করেছি যা এখন public পাবলিক শিরোনামে কেবলমাত্র এগিয়ে ঘোষণা is এখন আমি নির্মাণ করতে পারেন।

ঘটনাচক্রে, CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES সেটিংটি কার্যকর হয়নি। আমি এটি কাঠামো এবং নির্ভর প্রকল্পে উভয়ই সেট করার চেষ্টা করেছি। এই কার্যকারিতাটি প্রয়োজনীয় ছিল, তবে আমি কেন তা নিশ্চিত নই।


এটি সম্পূর্ণ সাহায্য! আমার ক্ষেত্রে এটি ছিল রিচাবিলিটি।
ড্যানিয়েল ব্রিম

4
আমি যখন আমার ফ্রেমওয়ার্ক মডিউলে এসএসজিপআর্কাইভকে অন্তর্ভুক্ত করার চেষ্টা করি তখন আমি নিশ্চিত যে এটি আমার সমস্যার সমাধান। সার্বজনীন শিরোনাম <zlib.h> ইমপোর করছে এবং একই ত্রুটি দিচ্ছে। আপনি কি আপনার সোর্স কোডটি কোথাও পোস্ট করতে পারেন কারণ আমি এটির উত্তরের জন্য লড়াই করছি যেহেতু আমি কেবলমাত্র আপনার উত্তরের কিছু অংশ বুঝি .. ধন্যবাদ!
ব্রুস

15

ইন সুইফট :

1. আপনার এক্সকোড প্রকল্পটি পরিবর্তন করুন এবং নীচে উল্লিখিত হিসাবে টার্গেটগুলির বিল্ড সেটিংস:

ফ্রেমওয়ার্ক মডিউলগুলিতে নন-মডিউলার অন্তর্ভুক্ত করার অনুমতি দিন: না

বিটকোড সক্ষম করুন: হ্যাঁ

২. গুগলম্যাপস আইওএস এসডিকে জন্য উপলব্ধ সর্বশেষতম সংস্করণটি ব্যবহার করুন (এটি পাওয়ার জন্য কোকোপডগুলি ব্যবহার করুন):

গুগল ম্যাপস (1.10.4)

৩. সমস্যাযুক্ত আমদানির মন্তব্য করুন:

//import GoogleMaps

৪. আপনার ব্রিজিং শিরোনাম ফাইলটি তৈরি করুন বা সংশোধন করুন, সমস্যাযুক্ত আমদানি যুক্ত করুন:

[আপনার এক্সকোড প্রকল্পের নাম] - ব্রিজিং-শিরোনাম

// Use this file to import your target's public headers 
// that you would like to expose to Swift.
#import <GoogleMaps/GoogleMaps.h>

৫. আপনার এক্সকোড প্রকল্পটি পরিষ্কার এবং পুনর্নির্মাণ করুন।


1
এটি অনেক সাহায্য করে! গুগলমোবিলএডস ফ্রেমওয়ার্ক (কোকোপড সহ) নিয়ে দুর্দান্ত কাজ করছে
ব্লুওনোহর

আরো বিস্তারিত তথ্য শিরোনাম ফাইল তৈরি করার পদ্ধতি জন্য, দেখুন: stackoverflow.com/a/51227304/529663
lenooh

6

এই উত্তরটি সেকেলে।

ফ্রেমওয়ার্কগুলি আমদানি করার সময়, আপনাকে অবশ্যই সমস্ত হেডার ফাইলগুলি আমদানি করতে হবে যা রুট শিরোনামের সাথে নির্ভরতা ভাগ করে depend এটি সর্বদা কার্যকর হয় তা নিশ্চিত করার সবচেয়ে সহজ উপায় হ'ল ফ্রেমওয়ার্কের "শিরোনাম" ফোল্ডারের সমস্ত শিরোনামগুলি আপনার সর্বজনীন শিরোলেখের পথে আমদানি করা।

এখানে চিত্র বর্ণনা লিখুন

সুইফ্ট সংকলকটি সম্পর্কিত সম্পর্কিত তথ্যের সাথে অ-মাংগাড প্রতীকগুলির মানচিত্র তৈরি করতে এই তথ্যটি ব্যবহার করে।


ফ্রেমওয়ার্ক ফাইল থাকার উদ্দেশ্যটিকে এটি পরাজিত বলে মনে হচ্ছে, তবে এটি আমার পক্ষে কাজ করেছে। চার্টবুস্ট এবং রেভমব দু'জনেই কেবলমাত্র লিবিজের পরিবর্তে ফ্রেমওয়ার্ক ফাইলগুলি ব্যবহার শুরু করেছেন। তাদের অ্যাপ্লিকেশন শিরোনাম থেকে তাদের অ্যাপ্লিকেশন শিরোনাম থেকে সমস্ত কিছু অনুলিপি করা সমস্যার সমাধান করে।
জেসন শর্ট

এটাই কি একমাত্র সমাধান? আমার 6 টি ফ্রেমওয়ার্ক রয়েছে এবং প্রতিটি কাঠামোর 20 টি শিরোনাম রয়েছে। এটি একটি জগাখিচুড়ি সৃষ্টি করে। কোন বিকল্প?
ভিভিন

1
সম্ভবত বেশী. এটি সম্ভবত আর প্রাসঙ্গিক নয় কারণ এটি কোনও এক্সকোড বাগের মতো কাজ করেছিল।
seo 17

6

না

#import "MyOtherFramework.h"

ডু

#import <MyOtherFramework/MyOtherFramework.h>

3

শিরোনাম ফাইলটি লক্ষ্যমাত্রায় বরাদ্দ করা হয়েছিল তবে কেবলমাত্র প্রকল্পের দৃশ্যমান হিসাবে চিহ্নিত হয়েছিল, এই ত্রুটির সমাধানের জন্য জনসাধারণের নেতৃত্বের পরিবর্তন মাত্র।


আমি ঠিক কীভাবে এটি করতে পারি? আমি আমার টুইটারকিট শিরোনাম ফাইলগুলি নিয়ে
সমস্যায় পড়েছি

2

আমি জানি যে এটি একটি পুরানো প্রশ্ন, তবে আমার একই সমস্যা ছিল এবং উপরের কিছুই আমাকে সাহায্য করে না। সুতরাং আমি আশা করি আমার উত্তর কারও পক্ষে সহায়ক হবে। আমার ক্ষেত্রে সমস্যাটি ALWAYS_SEARCH_USER_PATHS সেটিংয়ে ছিল। যখন এটি কোনও প্রকল্পে নির্ধারিত ছিল এবং ঠিক আছে কাজ করে। তবে যতদূর পডের একটির জন্য এটি YES এ সেট করা দরকার ছিল আমি ত্রুটি পেয়েছি

ফ্রেম ফ্রেম মডিউলে নন-মডুলার শিরোনাম অন্তর্ভুক্ত করুন

কয়েক কাপ কফি এবং সারাদিন গবেষণার পরে আমি জানতে পেরেছিলাম যে এক্সকোড 7.1 বিটা 2 রিলিজ নোটের পরিচিত সমস্যা অনুসারে :

Previously আপনি পূর্বে সংকলিত ফ্রেমওয়ার্কের জন্য "ফ্রেম ফ্রেম মডিউলের অভ্যন্তরে নন-মডিউলার শিরোনাম অন্তর্ভুক্ত করুন" উল্লেখ করে একটি ত্রুটি পেয়ে থাকলে, নিশ্চিত করুন যে "সর্বদা অনুসন্ধান ব্যবহারকারী পথ" বিল্ড সেটিংসটি "না" তে সেট করা আছে। ডিগ্রিটি কেবলমাত্র উত্তরাধিকারগত কারণে "হ্যাঁ"। (22784786)

যদিও আমি এক্সকোড 7.3 ব্যবহার করছিলাম তবে মনে হচ্ছে এই বাগটি এখনও ঠিক হয়নি।


এটাই আমাকে সাহায্য করেছিল! কোনটিতে স্যুইচ করার পরে আমাকে কিছু আমদানি পরিবর্তন করতে হয়েছিল তবে এখন আমি আমার প্রয়োজনীয় কাঠামোটি আমদানি করতে সক্ষম হয়েছি!
পাভেল গুরুভ 4'17

2

স্যুইচিং বিল্ড সেটিংস> ফ্রেমওয়ার্ক মডিউলগুলিতে হ্যাঁ অন্তর্ভুক্ত নন-মডিউলার অনুমতি দিন ! আমার জন্য একই সমস্যা সমাধান।


2

আমি সমস্যাটির সাথে আমার অভিজ্ঞতা যুক্ত করতে চাই।

কেবল সংক্ষেপে বলা যায়:

  • @ এম্বিয়েন্টলাইটের উত্তর দুর্দান্ত এবং এটি বেশিরভাগ সমস্যার সমাধান করে।
  • নন-মডুলার শিরোনামকে মঞ্জুরি দেওয়া হল আরেকটি সমাধান (উপরের উত্তরগুলির কয়েকটি দেখুন)।
  • ফ্রেমওয়ার্কের শিরোনামগুলি সর্বজনীন হিসাবে চিহ্নিত করা (কেবলমাত্র যেগুলি আপনি প্রকাশ করতে চান) এবং সেগুলি ছাতার শিরোনামে আমদানি করে।

উপরের উত্তরগুলিতে আমার 2 টি সংযোজন এখানে রয়েছে:

  • হেডারের জন্য আপনার প্রকল্পের আমদানিগুলি সাবধানে যাচাই করুন যা আপনার ফ্রেমওয়ার্কগুলি সরাসরি তাদের মধ্যে আমদানি করে (যদি সম্ভব হয় সামনের ঘোষণাপত্রটি ব্যবহারের পরিবর্তে) - অন্য শিরোনাম ফাইলের মধ্যে একটি শিরোনাম ফাইল অন্তর্ভুক্ত করা ভাল অভ্যাস নয়; কখনও কখনও এটি সমস্যার কারণ হয়ে থাকে কারণ সঠিকভাবে করা না হলে এটি একাধিক শিরোনাম অন্তর্ভুক্ত করতে পারে এবং লিঙ্কারের সমস্যা তৈরি করতে পারে।
  • আপডেট: নিশ্চিত করুন যে লাইব্রেরির আর্কিটেকচারগুলি এবং আপনি যে টার্গেটটি এটির সাথে মিলিয়ে যেতে চান তা লক্ষ্য করুন।
  • এবং সবশেষে, উপরের সমস্ত কিছু করার পরেও আমি এখনও সেই ত্রুটিটিকে ঘিরে ধরেছিলাম। সুতরাং আমি আরও কিছুটা খনন করে খুঁজে পেয়েছি (অ্যাপল বিকাশকারী ফোরামে, তবে আমি লিঙ্কটি হারিয়ে ফেলেছি :() যে আপনি যদি ছাতার শিরোনামে শিরোনামকে অন্তর্ভুক্ত করেন <framework/headerName.h>তবে এটি কেবল এর মতো নয় "headerName.h"তবে সমস্যাটি চলে যায়।

আমি এটি শেষ চেষ্টা করেছি এবং এখনও পর্যন্ত আমি এই সমস্যাটি আর अनुभव করি নি, তবে আমি সন্দেহ করি যে এই সমাধানটি কেবলমাত্র যদি আপনি শীর্ষের কয়েকটি উত্তর প্রয়োগ করেন তবে তা বৈধ হবে (দ্রষ্টব্য: এগুলি একে অপরের সাথে সামঞ্জস্যপূর্ণ নয়, উদাহরণস্বরূপ , মডিউল পদ্ধতির এবং নন-মডিউলার শিরোনামের মঞ্জুরি সহ)।


1

কোনও প্রকল্পের নিজস্ব কাঠামোটি অন্তর্ভুক্ত করার সময় আমার এই সঠিক সমস্যা ছিল। সমস্ত আমদানি sqlite3.h রেখে। মি ফাইলগুলিতে সর্বজনীন। সেগুলি না করে এটি স্থির করে। আমি ধরে নিচ্ছি যে অন্যান্য লাইব্রেরিগুলি Xcode এর সাথে একই ধরণের সমস্যা চিহ্নিত করতে পারে।


1

আমার ফেসবুকের 4.02 এসডিকে এবং এফবিএসডিকেকোরকিট সম্পর্কিত নির্দিষ্ট সমস্যা ছিল।

আমি সমস্ত পদক্ষেপগুলি করেছি তবে এখনও মডিউল নন শিরোনাম সম্পর্কে ত্রুটি। পর্যায়সমূহ-> শিরোনাম বিভাগটি তৈরি করতে আমি ফ্রেমওয়ার্ক থেকে কেবল নির্দিষ্ট শিরোনামটিকে টেনে এনে ফেলেছি।

তারপরে শীর্ষে প্রকল্প নেভিগেটরে স্বয়ংক্রিয়ভাবে শিরোনামের একটি অনুলিপি তৈরি করা হয়েছে।

আমি এটিকে বিল্ড পর্যায়গুলি -> শিরোনাম থেকে সরিয়েছি এবং নতুন ফাইলটি মুছলাম এবং ভাল কাজ করেছি।

এটি পুনরায় সেট বা কিছু।


1

আমার ক্ষেত্রে (এক্সকোড 9 বিটা 6 - সুইফট 4 - কোকোপড ব্যবহার করে) এটি সমাধান হয়েছিল যখন আমি পডফিল.লক এবং পড ডিরেক্টরি মুছে ফেলেpod install আবার দৌড়েছি


1

সুইফট 2 থেকে সুইফট 3 এ একটি প্রকল্প আপডেট করার পরে আমি এই সমস্যাটি পেয়েছি। কোডটি আপডেট করার জন্য আমি এক্সকোড 8.3.2 ব্যবহার করেছি এবং "ফ্রেমওয়ার্ক মডিউলটির মধ্যে নন-মডিউলার শিরোনাম" ত্রুটি থেকে মুক্তি পেতে পারি না। যখন আমি একই প্রকল্পটি এক্সকোডের অন্য সংস্করণে খুলি (9.0.1 সংস্করণ) ত্রুটিটি উপস্থিত হয়নি।


0

সাধারণত এই ত্রুটিটি নির্বাচিত উত্তরের কারণে ঘটে থাকে, তবুও আমার নতুন প্রকল্প ফোল্ডারে ফ্রেমওয়ার্ক ফাইলগুলি টেনে আনার সময় আমি এই ত্রুটিটি দুর্ঘটনাক্রমে একবারে উপস্থিত হয়েছিলাম। আমি ফ্রেমওয়ার্কগুলি মুছতে ক্লিক করেছি তবে দুর্ঘটনাক্রমে কেবলমাত্র ফাইলগুলি সম্পূর্ণ মুছার পরিবর্তে ফ্রেমওয়ার্কগুলিতে কেবল 'রেফারেন্স সরান' চাপ দিয়েছি। এই মুহূর্তে আমি যদি আমার প্রোজেক্ট ফোল্ডারটি ফাইন্ডারে খুলি তবে আমি সেখানে 'কোরলোকেশন' এবং 'অডিওটুলবক্স' এর মতো ফাইলগুলি দেখেছি। প্রকল্প ফোল্ডার থেকে এই ফাইলগুলি মুছে ফেলা এবং প্রকল্পটি পরিষ্কার করা সমস্যার সমাধান করেছে।


0

নন মডুলার অন্তর্ভুক্ত আমদানি করার অনুমতি দেওয়ার পরে, আপনি উদ্দেশ্য-সি ব্রিজিং শিরোনাম ব্যবহার করে সেই মডিউলটি আমদানির চেষ্টা করতে পারেন:

#import <YandexMobileMetrica/YandexMobileMetrica.h>

0

আমি এটি Modulesফ্রেমওয়ার্ক থেকে ফোল্ডার সরিয়ে সমাধান করেছি ।

  • আপনার কাঠামোর অবস্থানটিতে ব্রাউজ করুন যা ফাইন্ডার ব্যবহার করে অ্যাপ প্রকল্পে উপস্থিত রয়েছে

  • Test.frameworkফোল্ডারের ভিতরে যান (উপরের ক্ষেত্রে এটি হবে SOGraphDB.framework) এবং Modulesফোল্ডারটি মুছুন ।

  • অ্যাপটি ক্লিন এবং রি বিল্ড করুন, এটি সমস্যার সমাধান করবে।


-1

পার্স কাঠামো আমদানিতে আমার এই সমস্যা হয়েছিল had আমি এটি সমাধান করার একমাত্র উপায় হ'ল আমার শেষ প্রতিশ্রুতি থেকে কেবলমাত্র আমার সমস্ত পরিবর্তনগুলি বাতিল করা (কেবল ফ্রেমওয়ার্কটি মুছে ফেলা এবং প্রকল্পটি পরিষ্কার করা কার্যকর হয়নি) এবং তার অন্যান্য প্রয়োজনীয় ফ্রেমওয়ার্কগুলির সাথে আবার পার্স (এসডিকে একটি নতুন ডাউনলোডের পরে) যুক্ত করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.