주 솔루션에 연결된 DLL로 대상이되는 라이브러리를 만들고 있습니다.다른 C++ 환경으로 DLL 만들기
이 새로운 DLL은 매우 복잡하며 C++ 11 기능을 사용하고 싶습니다. 가장 확실하게 링크 할 프로그램은 아닙니다. 실제로, 주 프로그램은 현재 VS2008과 VS2010을 사용하여 "깔끔하게"빌드되었습니다 (그리고 나는 리눅스 용 GCC 4.3을 생각합니까?).
내가 제안하는 것 :
/.so를 .DLL에 컴파일을위한 IDE와 인텔 C++ 컴파일러 2013 VS2012를 사용하여 - 리눅스 - 내가 이해 등의 같은 (기계 양식에 기본적으로 아래이다. exe).
- 이 가능한 경우
내가 문제를 해결하기 위해 C++를 사용하는 데 익숙 해요 동안
, 나는 컴파일/링크 등을 따라서의 기초를 유창하게 구사하지 않다, 나는 지역 사회를 부탁하고 싶습니다 - 가능하다면 간단합니까? (설명했듯이 간단합니다.)/그 길에 어떤 함정이나 문제점을 예상 할 수 있습니까? 우려의
지역은 내가 예상 :
- 런타임 라이브러리 -이이 노력을 탈선 요인이 될 것으로 기대합니다. 나는 그들에 대해 아무것도 모르고/그들이 어떻게 문제를 일으킬 수 있다는 것을 제외하고는 어떻게 작동 하는지를 압니다.
- 표준 라이브러리 구현의 차이점 - DLL 형식이 다운되면 중요합니까?
- threading conflicts - dll 스레드와 주 프로그램 스레드가 동일한 데이터를 수정하지 않으며 실제로 주 프로그램의 스레드 중 하나가 DLL 함수를 호출합니다.
보너스 : 위의 내용은 내가 예상하는 경로이지만 intellisense, 일반보기 등 (이 코드는 기본적으로 주 솔루션의 프로젝트가 될 수 있음)을 위해이 코드를 열어 놓는 것이 이상적입니다. 다른 런타임 라이브러리/컴파일러를 지정하는 방법이 있습니까? 이 작업을 수행 할 수 있습니까?
EDIT :이 보너스 부분의 주된 이유는 주 프로그램과이 라이브러리를 별도로 구축 할 경우 발생할 수있는 "버전 관리"충돌을 없애기 위해서입니다.
참고 : C++ 11은 최신 버전이기 때문에 강력한 형식의 열거 형 및 크로스 플랫폼 스레딩 코드는 라이브러리에 큰 보너스가 될 것입니다.
:/그래서 크로스 플랫폼, C + + 11 코드 조각, ICC2013로 마이 그 레이션하는 전체 솔루션을 설득해야 할 것 같아, 어휴 회의 예. (컴파일러를 마이그레이션하는 것이 충분합니까? 고려해야 할 사항은 무엇입니까?) –
@ AK4749 : 컴파일러 외의 다른 것은 하나의 정의 규칙을 위반하지 않았는지 확인하는 것입니다. 따라서 규칙을 호출하거나 디버그 반복자 또는 클래스 레이아웃을 변경할 수있는 유사한 옵션을 사용할 수있는 옵션이있는 경우 해당 클래스가 모든 모듈에서 동일하게 설정되어 있는지 확인하십시오. 그런 다음 메모리가 다른 할당 자로 인해 해제되지 않았는지 확인해야합니다. –
아아, 생각해 봅시다. * 할당을 고려했습니다. 이 라이브러리가 할당 한 모든 메모리는이 라이브러리가 전적으로 소유하므로 괜찮습니다. 다른 점에 대해 자세히 살펴 보겠습니다. ICC2013에는 end-to-end C++ 11 실행 파일에 필요한 모든 라이브러리/etc가 있어야합니다. 여기에서 제가 읽은 것입니다. 그 맞습니까? 그리고 실행 환경에 이전 런타임 라이브러리와 호환되지 않는 새로운 런타임 라이브러리가 필요합니까? 당신의 도움을 주셔서 감사합니다. –