이것은 아마도 중복되었지만 LNK2019
개의 질문이 너무 많아서 모두 읽을 수 없습니다. 여기에 내 문제입니다 : 나는 다음과 같은 오류 메시지가 받고 있어요 :오류 LNK2019 - 이름 장식 - 누락 __imp_
12 B 00002EFF [email protected]@[email protected]@@@Z = @ILT+7930([email protected]@[email protected]@@@Z)
그것은 __imp__
를 제외한 모든 것을 갖추고 있습니다 : 나는 DUMPBIN
의 출력을 볼 때
4>ScatterometerView.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: __thiscall CPGLGraphBitDlgBSDF::CPGLGraphBitDlgBSDF(class CPGLGraph *)" ([email protected]@[email protected]@@@Z)
referenced in function "public: void __thiscall CScatterometerView::DisplayBSDFPlot(class BSDF *)" ([email protected]@@[email protected]@@Z)
, 내 생성자를 참조하십시오.
#define PGL_EXT_CLASS _declspec(dllexport)
class PGL_EXT_CLASS CPGLGraphBitDlgBSDF : public CPGLGraphDlg
{
public:
static const int numPointsToAvg = 3;
CPGLGraphBitDlgBSDF();
CPGLGraphBitDlgBSDF(CPGLGraph* _pGraph);
~CPGLGraphBitDlgBSDF(void);
// ...lots more functions...
}
및 실행의 사용은 다음과 같습니다 : 다음과 같이 DLL의 클래스가 정의
CPGLGraph* pGraph = new CPGLGraph;
// ...code to fill in the graph data...
m_bsdf_plot = new CPGLGraphBitDlgBSDF(pGraph);
키커 클래스의 다른 모든 기능이 작동하는 것입니다; 최근에 추가 한 두 개 (이 생성자 포함) 만 작동하지 않습니다. 이전 기능에는 새로 추가 된 기능이 필요하다고 생각되는 __imp__
장식이 없습니다.
작성된 .def
파일은 기능을 정의하지 않으므로 차이는 없습니다. 링커에서 MAP file
을 사용했으며 접두사가 __imp__
인 유일한 함수는 Microsoft에서 정의한 함수입니다. PGL.dll에 정의 된 단일 함수가 없으며 모두 제대로 작동합니다. 문제 또는 단서를 찾을 곳을 말해주십시오.
좋은 지적. 내 코드는 PGL (Plot Graphics Library)을 기반으로하며 코드와 거의 동일한 코드가 PGL.h에 이미 있습니다.이 파일은 내 파일에 # 포함되어 있습니다. 다른 아이디어? –
잘 모르겠지만 클래스의 함수를 모두 수동으로 내보내려고합니다. 생성자/소멸자/함수 앞에 PGL_EXT_CLASS를 씁니다. 어쩌면 수출 될 수없는 수업 중에는 시간이 좀 있습니다. –
또 다른 좋은 아이디어! 불행히도, 나는 그것을 시도했을 때 다음과 같은 오류 메시지가 나타납니다 : "dllexport/dllimport로 선언 된 클래스의 멤버는 그 지정자로 선언 할 수 없습니다". 따라서 클래스가 dllexport로 선언되었고 귀하의 최신 제안을 사용할 수 없다는 것이 확실합니다. 적어도 나는 뭔가를 배웠다. –