2014-07-15 4 views
0

현재 Unity3D에서 작업 중이며 .net을 사용하여 VS2008에서 컴파일 된 .dll 파일을 가져와야합니다. PC 버전에서 완벽하게 작동하며 원하는대로 작동하지만 내 iOS 빌드가 어딘지로 손상됩니다. 나는 심지어 모바일 장치에서 .dll을 사용하지 않고 dll (DllImport)에 연결되는 코드는 PC 빌드에서만 컴파일됩니다.Unity에서 .dll 사용 C#

나는 iOS 용 빌드 할 때 다음과 같은 오류를 받고 있어요 :

ArgumentException: The Assembly Microsoft.VisualC is referenced by mydll. But the dll is not allowed to be included or could not be found. 

I 2.0 .NET으로 (연합에서 모든 플랫폼 플레이어 설정에서) API의 호환성 수준을 변경 한, 내장 내 dll은 2.0 .net 레벨을 목표로합니다.

왜 내 빌드에서 dll입니까? .dll을 가져 오기위한 올바른 단계는 무엇입니까? 중요한 항목을 놓친 것일 수도 있습니다.

QUICK 편집 :

Error building Player: NullReferenceException: Object reference not set to an instance of an object 

나는 그것이의 위상을 컴파일 AOT 크로스 동안 생각 : 나는 아직도 몇 가지 오류를 받고 있어요 닷넷 API의 호환성 아이폰 결국 올바르게 설정하지만,되지 않았습니다 플레이어 생성. 어쩌면 누군가가 이것을 어떻게 다룰 줄 아는가?

또한 내 질문에 명확하지 않았지만 내 DLL은 관리되는 코드를 사용하여 .net 기능에 액세스 할 수 있습니다.

업데이트 : 이제 내 iOS 빌드에서이 .dll을 제외하는 방법이 있는지 궁금한가요? (빌드 할 때마다 수동으로 수행하는 것 외에는). 나는 이것을 할 수있는 방법을 찾을 수없는 것 같습니다. 스트리핑을 시도했지만 응용 프로그램의 다른 부분과 잘 작동하지 않습니다 (몇 가지 문제가 발생 함). 이제는 조금 잃어 버렸습니다. 수동으로 제거하고 대안으로 추가 할 수 있지만 더 깨끗한 솔루션을 원합니다!

+1

iOS 응용 프로그램에서 사용할 수있는 Visual Studio로 작성된 DLL을 기대하지 않습니다. –

+0

정확하게, iOS 앱에서 사용하고 있지 않습니다. 앱의 PC 버전 용이지만, 어떤 이유로 iOS 앱에 포함되어 빌드 할 수 없습니다. – Bypp

+0

그 원인을 어떻게 알 수 있습니까? 일반적인 문제 해결 방법이 적용됩니다. iOS 코드에서 DLL에 대한 가짜 참조를 확인하고 IDE의 구성 및 참조 파일을 확인하십시오. –

답변

0

필자가 아는 한, 하나의 플랫폼에서만 DLL을 제거 할 수는 없습니다.

당신이 할 수있는 일은 필요할 때 dll을 직접로드 할 수 있다는 것입니다. dll 확장자를 .bytes으로 변경하고 byte[]으로로드하고 System.Reflection.Assembly.Load을 누릅니다.

일해야하지만 몇 가지 부작용이있을 수 있습니다.

+0

이 접근 방식에는 어떤 종류의 부작용이 있습니까? 지금은 차라리 수동으로 해보고 나중에 분해 해 버리겠습니다. – Bypp

+0

정확하지 않습니다. 내 생각에 통계는 입문에 문제가있을 수 있으며, AOT는 전적으로 또는 제너릭을 깨뜨릴 수 있습니다 (웹 플레이어에서). 어쩌면 뭔가 monobehaviour 관련 실 거예요. 제대로 테스트하면 안전해야합니다. –

+0

동적 코드가 App Store에서 거부 될 수 있습니다. https://answers.unity.com/questions/892645/assemblyload-on-ios.html –