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


143

আমি এক্সকোড 6 ব্যবহার করছি,

1) প্রথমে আমি একটি গতিশীল গ্রন্থাগার (কোর লাইব্রারি) তৈরি করছি। এই লাইব্রেরিতে RequestPoster.h ফাইল রয়েছে .h

2) তারপরে আমি একটি কোকো টাচ ফ্রেমওয়ার্ক তৈরি করে এই গতিশীল লাইব্রেরি (কোর লাইব্রারি) যুক্ত করেছি।

3) তারপরে এই কাঠামোটি আমার প্রকল্পে যুক্ত করা হবে এবং এটি অনুরোধপোস্টার এইচ ফাইলের (কোরিলিবারি) ত্রুটি দেয়।

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

ifaddrs.h, আরপা / inet.h, sys / প্রকার

এই ফাইলটি প্রকল্পে পাওয়া যায় নি।

উত্তর:


190

"টার্গেট" এর অধীনে বিল্ডিং সেটিংস চেষ্টা করুন এবং "ফ্রেমওয়ার্ক মডিউলগুলিতে নন-মডিউলার অন্তর্ভুক্ত মঞ্জুরি দিন" সেট করুন সেট করুন।

আসল উত্তরটি হ'ল লাইব্রেরির মালিক দ্বারা আমদানির অবস্থান পরিবর্তন করা দরকার। এই ফাইলগুলি ifaddrs.h, আরপা / inet.h, sys / প্রকার। H একটি ফাইলের ফ্রেমওয়ার্কে একটি .h ফাইলে আমদানি করা হচ্ছে, যা এক্সকোড পছন্দ করে না। গ্রন্থাগারের রক্ষণাবেক্ষণকারীদের তাদের একটি .m ফাইলে স্থানান্তরিত করা উচিত। উদাহরণস্বরূপ গীতহাবে এই সমস্যাটি দেখুন, যেখানে এএফ নেটওয়ার্কিং একই সমস্যাটি স্থির করেছে: https://github.com


2
যদি ত্রুটিযুক্ত শিরোনামটি আমদানি করা শিরোনামগুলি থেকে কোনও প্রকার ব্যবহার করে তবে কী প্রস্তাবিত হবে? উদাহরণস্বরূপ, যদি মডিউলে শিরোনাম মডিউল h একটি প্রকারের পরামিতি গ্রহণ করে কোনও ফাংশন ঘোষণা করে তবে ifaddrsতারা ifaddrs.h আমদানি করতে বাধ্য।
আয়ুশ গোয়েল

তবে তারা যদি সিস্টেমের মতো থাকে তবে কী হবে /usr/include/libproc.h?
বেন লেগিগেরো 21

3
আপনি কী দয়া করে পরিবর্তনের প্রভাবটি ব্যাখ্যা করতে পারেন: ফ্রেমওয়ার্ক মডিউলগুলিতে নন-
মডিউলারকে

আমি মনে করি সম্ভবত উত্তম উত্তরটি মূলত এই ত্রুটিটি স্থির করে দেওয়ার পরিবর্তে এটিকে একটি মডুলার শিরোনাম তৈরি করতে জড়িত। আমি সহজেই অ্যাপলটিকে মডিউলে নন-মডুলার শিরোনামগুলির মঞ্জুরি দেওয়ার বিকল্পটি অপসারণের কল্পনা করতে পারি।
বেন লেগজিওর

170

ফ্রেমারের পাবলিক হেডারগুলির অংশ হিসাবে শিরোনাম ফাইলগুলি সর্বজনীনভাবে উপলভ্য হয়েছে তা নিশ্চিত করুন।

গোটো ফ্রেমওয়ার্ক -> লক্ষ্য -> পর্যায়গুলি তৈরি করুন এবং প্রজেক্ট থেকে জনসাধারণের সাথে সম্পর্কিত হেডার ফাইলগুলি সরানোর জন্য টানুন। আশা করি এইটি কাজ করবে!

স্ক্রিনশট


3
এটি আমাকে ওফেক্টিভ সি কোডটিকে একটি সুইফ্ট ফ্রেমওয়ার্কে অন্তর্ভুক্ত করতে সহায়তা করেছে, ধন্যবাদ!
ভাদিম

1
এক্সকোডের মূল স্ক্রিনের ডানদিকে ফাইল ইন্সপেক্টর উইন্ডোটি ব্যবহার করে আপনি নিজের ফাইলটিতে প্রকল্প থেকে জনসাধারণের কাছে টার্গেট সদস্যতার জন্যও এই পরিবর্তন করতে পারেন।
পিগপকেট

যদি সুইফট / অবজেক্টের মিশ্রণে গ্রন্থাগারটি আমদানি করা হয় তবে ব্রিজিং শিরোনামটিও সর্বজনীনভাবে বীমার করা প্রয়োজন। ভুল করেছিলাম!
নিক এইচ 247

74

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

আপনার সম্পাদনা করতে হবে সেটিংস আইটেমটি তৈরি করুন

দ্রষ্টব্য : অন্তর্নিহিত ত্রুটিটি অনাবৃত করার জন্য আপনার এই বৈশিষ্ট্যটি ব্যবহার করা উচিত, যা আমি প্রায়শই কিছু নির্ভরশীল সম্পর্কযুক্ত ফাইলগুলিতে অ্যাঙ্গেল-ব্র্যাক্ট গ্লোবালটির নকলকরণের কারণে ঘন ঘন ঘটিত বলে মনে করেছি:

#import <Foo/Bar.h> // referred to in two or more dependent files

যদি ফ্রেম মডিউলগুলিতে YES এর ফলাফলের জন্য নন-মডিউলারের অনুমতি দিন সেটিংসে "এক্স একটি দ্ব্যর্থক রেফারেন্স" ত্রুটি বা সাজানোর কোনও কিছুর ফলাফল রয়েছে, তবে আপনি আপত্তিজনক সদৃশগুলি সনাক্ত করতে এবং সেগুলি মুছে ফেলতে সক্ষম হবেন। আপনি আপনার কোড সাফ করার পরে ফ্রেম মডিউলগুলিতে নন-মডিউলার মঞ্জুরি দেওয়ার জন্য NO এ সেট করুন


1
ঠিক আছে, এটি ছিল সমস্যা-কারণগুলি angle আমার একটি কোকোপডস আমদানিতে এই সমস্যা ছিল এবং এঙ্গেল বন্ধনীগুলির পরিবর্তে কোট ব্যবহার করতে আমদানি পরিবর্তন করে এটি ঠিক করেছিলাম।
মাইকেল ফরেস্ট

উফফফ, না তা হয়নি। আমার প্রকল্পটি পরিষ্কার করার পরে এটি ভেঙে গেছে বলে আবিষ্কার করেছি: - /
মাইকেল ফরেস্ট

2
আমি কোনও 'দ্ব্যর্থহীন রেফারেন্স' সতর্কতা খুঁজে পাই না। ইয়েস এ সেট রেখে যাওয়ার ত্রুটিগুলি কী কী ?
নিকোলাস মিয়ারি

28

আমার একই সমস্যা ছিল এবং কেবল শিরোনামের ফাইলটি পাবলিক করে এটি সমাধান করুন। [সমস্যা]

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

শিরোনাম ফাইলের সুযোগ পরিবর্তন করা হচ্ছে


এটি বিশেষত ঘটে যখন আপনি একটি বিদ্যমান পাবলিক শিরোনামটি নকল করেন, সদৃশ শিরোনামের সদৃশটিকে "প্রকল্প" হিসাবে পরিবর্তন করা হয়
জেরেমি

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

22

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

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


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

20

আসলে এটির সমাধানের সহজ উপায় হ'ল #importবিবৃতিটি .mপরিবর্তে ফাইলটির শীর্ষে স্থানান্তর করা (এটির পরিবর্তে আপনার .hশিরোনামের ফাইলটিতে থাকা)। এইভাবে এটি অভিযোগ করবে না যে এটি একটি নন-মডুলার শিরোনাম ফাইল সহ including আমি এই সমস্যা যেখানে ছিল Allow non-module includesসেট YESকরেনি না আমার জন্য কাজ, তাই বাস্তবায়ন ফাইলে এটা সরিয়ে, এটা অভিযোগ বন্ধ করে দেয়। এটি আসলে আমদানির পছন্দসই উপায় এবং যাইহোক শিরোনাম ফাইলগুলি অন্তর্ভুক্ত। একবার আপনি এটি সম্পন্ন করার পরে, এটিকে পুনরায় সেট করার NOকাজ করা উচিত।

আদর্শভাবে আমাদের চেষ্টা করা উচিত এবং Allow non-module includesসেট করার জন্য আমাদের লক্ষ্য করা উচিত NOYESবেশিরভাগ ক্ষেত্রে এটিকে সেট করার অর্থ আপনি কোনও ভুল করছেন। সেটিংসটি অনুবাদ করে "ডিস্কে এলোমেলো শিরোনাম ফাইল আমদানির মঞ্জুরি দিন যা মডিউলের অন্য অংশ নয়" to এটি অনুশীলনে খুব কম ব্যবহারের ক্ষেত্রে প্রযোজ্য এবং তাই এই সেটিংটি সর্বদা হওয়া উচিত NO(অর্থাত্ ডিফল্ট মান)।


10

আপনি যদি নিজের কাঠামোটি বিকাশ করছেন তবে:

এটি কেন ঘটছে?

প্রকাশ্য হেডার ফাইল আপনি আপনার উল্লেখিত আছে কোন module.modulemap আমদানি বিবৃতি যে থাকে না modulemap উল্লেখ, এই আপনি ত্রুটি দেব। যেহেতু এটি কিছু শিরোনাম আমদানির চেষ্টা করে যা মডিউল হিসাবে ঘোষিত হয় না (মডিউল.মডিউলম্যাপে), এটি ফ্রেমওয়ার্কের মড্যুলারটিটি ভেঙে দেয়।

আমি কীভাবে এটি ঠিক করতে পারি?

কেবলমাত্র শিরোনাম অন্তর্ভুক্ত করুন যা আপনার মডিউলটিকে ত্রুটি দিয়েছে mod

কেন কেবলমাত্র হ্যাঁ-মডিউলারের অনুমতি দেয় না?

কারণ এটি এখানে আসলে কোনও সমাধান নয়, এটির সাহায্যে আপনি আপনার প্রকল্পটি বলছেন "এই কাঠামোটি মডুলার হওয়ার কথা ছিল তবে তা নয় it এটি কোনওভাবে ব্যবহার করুন, আমি যত্ন করি না।" এটি আপনার গ্রন্থাগারের মডুলারিটি সমস্যাটি সমাধান করে না।

আরও তথ্যের জন্য এই ব্লগ পোস্টটি চেক করুন বা ঝনঝন ডক্স পড়ুন ।


আপনি এটি কীভাবে মডিউলটি সেট আপ করেছেন mod কোকো প্রকল্পের কাঠামোটি দিয়ে মডিউল ম্যাপ, আমি আমার লাইব্রেরিটিকে কেবল সুইফট-প্রকল্পগুলির সাথে কাজ করতে সক্ষম করার চেষ্টা করেছি, তবে লাইব্রেরির একটি নির্ভরতা, মডিউল.মডিউলম্যাপ কাজ করছে না, কোকোপোড মডিউলম্যাপটি স্বয়ংক্রিয়ভাবে তৈরি করা হচ্ছে, তবে এটি কাজ করছে না বলে মনে হচ্ছে, আপনি কি এরকম কোনও কিছুর মুখোমুখি হয়েছেন?
Amadeu Cavalcante ফিলোহো

8

আপনার যদি কোকোপডসের জন্য এটির প্রয়োজন হয় তবে লক্ষ্যগুলি এই লাইনগুলি এতে যুক্ত করুন Podfile:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      target.build_settings(config.name)['CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES'] = 'YES'
    end
  end
end

7

Allow Non-modular Includes in Framework Modulesকেবল অবজেক্ট কোডে কাজ করুন। দ্রুত কাজ না।

গবেষণা একটি নির্দিষ্ট সময়ের পর, আমি দেখা গেছে যে দ্রুতগতি, ঝনঝন শব্দ থেকে সতর্কবার্তা প্যারামিটার পাস করতে পারেন, যাতে সেট OTHER_SWIFT_FLAGSকরার -Xcc -Wno-error=non-modular-include-in-framework-moduleদমন দ্রুতগতি আমদানি ত্রুটি।

কেবল কারও জন্য যাদের একই সমস্যা রয়েছে


6

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

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

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

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

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


6

একই সমস্যাটি পাগল করে তোলে fফিনালি, আমি ইন্টারফেসের পরিবর্তে 'আমদানি xxx.h' স্থাপনের ফলে সমস্যার সমাধান করতে পারি nd এবং যদি আপনি আপনার প্রকল্পটি পরিচালনা করতে কোকোপড ব্যবহার করেন y আপনি যুক্ত করতে পারেন

s.user_target_xcconfig = CL 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'হ্যাঁ'}

আপনার 'xxx.podspec' ফাইলে।


6

গতিশীল কাঠামো তৈরি করার সময় আপনি যদি এই ত্রুটিটি একটি ছাতা শিরোনামে দেখেন তবে নিশ্চিত করুন যে আপনি নিজের ফাইলটি আমদানি করে:

#import "MyFile.h"

এবং হিসাবে না#import <MyFramework/MyFile.h>


2

আমি এই সমস্যাটিও জুড়ে এসেছি এবং মূলত এটি একটি কোকোপডস ইস্যু বলে মনে হয়েছিল, তবে এটি অ্যাপস তৈরির সেটিংসে একটি সমস্যা ছিল যেখানে কেউ (সম্ভবত আমি) ${PODS_ROOT}শিরোনাম অনুসন্ধানের পথগুলিতে সেট করেছিলাম এবং এটি recursiveঅনুসন্ধান হিসাবে সেট করেছে । এটি এটিকে শিরোনামগুলি সন্ধান করতে দিচ্ছিল যা অ্যাপ তৈরির সময় ব্যবহার করার উদ্দেশ্যে নয়। একবার আমি non-recursiveসবকিছু সেট করার জন্য এটি সেট করেছিলাম fine recursiveসঠিক হেডারগুলি সন্ধানের জন্য অনুসন্ধানটি ব্যবহার করা একটি ভয়ঙ্কর হ্যাক। পাঠ শিখেছি।


আমি নিশ্চিত করতে পারি এটি আমার সমস্যাও ছিল।
উইলসন

ব্যক্তিগতকৃত অ্যাড কনসেন্ট নিয়ে আমার এই সমস্যা ছিল এবং এটি এটি স্থির করে। ধন্যবাদ!
স্টিভেন এলিয়ট

1

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


0

উপরের সমাধানগুলি যাচাই করার পরে আমি ছাতা শিরোলেখটিকে শীর্ষস্থানীয় তালিকার নীচে নিয়ে যাওয়া শেষ করেছি এবং এটি এক্সকোড 9.3 তে কাজ করেছে।


0

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

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

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

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


0

আমার ক্ষেত্রে আমি .podspecs ফাইলের "s.source_files" বিভাগে .h এবং .m ফাইল যুক্ত করতে ভুলে গেছি।

এটি এটি যোগ করার পরে সূক্ষ্ম কাজ।

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



-5

গিট ক্লিন ব্যবহার করে আমি এই ডজনগুলি ত্রুটি মুছে ফেলতে সক্ষম হয়েছি। আদেশটি এখানে: git clean -dffx && git reset --hard

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