문법적인 문제가 아니고
링크 문제인데 ㅠㅠ..
2>BaseLib.lib(TcpClient.obj) : error LNK2001: "private: static class BaseLib::CObjectPool<struct BaseLib::CTcpClient::_WRITE_BUFFER,100,1> BaseLib::CTcpClient::mWriteBufferObjectPool" (?mWriteBufferObjectPool@CTcpClient@BaseLib@@0V?$CObjectPool@U_WRITE_BUFFER@CTcpClient@BaseLib@@$0GE@$00@2@A) 외부 기호를 확인할 수 없습니다.
2>D:\Project\SgSolution\Bin\Debug\SgServer.exe : fatal error LNK1120: 1개의 확인할 수 없는 외부 참조입니다.
외부 기호 확인하라고 적혀있자나 아어
근데 영문판으로 해야 저게 제대로 이해가 되지. ms에서 번역기 돌려서 저지랄 이지 ㅋㅋㅋㅋ
아니 외부기호를 확인하라는데...
정적 라이브러리 빌드는 잘 됬고요
사용하는쪽에서도 include 시켜줬는데
obj에서 왜 기호를 못찾는지 모르겠시요...
아니면 제 프로젝트좀 봐주실려나여..
일단 링크는 하신것같군요. 게임엔진을 다뤄보셨는지는 모르겠지만 자바와는 달리 C++에서는 해더를 링크하는것이고 .cpp파일은 두 프로젝트에 존재해야합니다. 현재진행중인 프로젝트에 cpp파일을 라이브러리에 추가를 하시거나 그냥 추가만 해도됩니다.
.... 정적라이브러리가 있는데 cpp가 왜 필요하나여 -_-;;;
구현체는 lib에 있고 헤더만 제공하면 되는데..
또한 solution settings -> project dependencies -> 지금진행중인 프로젝트선택 -> 라이브러리로 추가할 프로젝트를 채크하시면 자동으로 두 프로젝트가 링크됩니다. 혹시 안하셨을까봐요
/SODMaster 그건 아무래도 c++개발자와 대화를 해보는게 빠르겠군요. 가끔은 이해가 안되지만 그냥 따라야되는것도 있답니다. 모든것은 자바와 똑같지가 않기 때문이죠. 물론 다른 방법이 있을지도 모르죠. polymorphism을 이용하던가요 (그냥 생각해봤음). 근대 이것도 생각해보면 말이 되는게 결국 이클립스에서 두 프로젝트 링크하는것은 다른 프로젝트에 전 프로젝트 instruction을 그대로 불러오기 때문이죠 하지만 c++는 해더만 추가하는거고 해더는 interface와같은 역활만하는것이기 떄문이죠
#pragma comment(lib, \"BaseLib.lib\") 했고 Lib 폴더를 설정도 해줬습니다. 다른 객체는 문제가 없는데 템플릿 객체를 멤버로 가지고 있는 객체가 말썽을 일으키는 중입니다.
아니면 제가 프로젝트를 올려드릴테니 한번 봐주시는것도... vs2010인디..
C형식하구 C++ 형식하구 함수 맹글링 방식이 다른데 확인해봣어? 그거 때문에 그런걸수도
dll이 아니라 맹글링은 관련이 없을듯 한데...