creo3.0二次开发出现LNK2038问题
问题阐述:确认了库文件的链接没有任何问题
当程序添加以下的头文件
#include <string>
#include <iostream>
#include <sstream>
并且调用creo自身的函数ProStringToWstring(menuname,"menuname.txt");
将会出现:
1>protk_dllmd.lib(srcwrappers.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(test1.obj 中)
1>protk_dllmd.lib(srcwrappers.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease”不匹配值“MDd_DynamicDebug”(test1.obj 中)
1>protk_dllmd.lib(srci18n.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(test1.obj 中)
1>protk_dllmd.lib(srci18n.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease”不匹配值“MDd_DynamicDebug”(test1.obj 中)
请问有没有大佬遇到过该类问题???
程序代码:
// test1.cpp : 定义 DLL 的初始化例程。 // #include "stdafx.h" #include "test1.h" #include <string> #include <iostream> #include <sstream> using namespace std; #ifdef _DEBUG #define new DEBUG_NEW #endif // //TODO: 如果此 DLL 相对于 MFC DLL 是动态链接的, // 则从此 DLL 导出的任何调入 // MFC 的函数必须将 AFX_MANAGE_STATE 宏添加到 // 该函数的最前面。 // // 例如: // // extern "C" BOOL PASCAL EXPORT ExportedFunction() // { // AFX_MANAGE_STATE(AfxGetStaticModuleState()); // // 此处为普通函数体 // } // // 此宏先于任何 MFC 调用 // 出现在每个函数中十分重要。这意味着 // 它必须作为函数中的第一个语句 // 出现,甚至先于所有对象变量声明, // 这是因为它们的构造函数可能生成 MFC // DLL 调用。 // // 有关其他详细信息, // 请参阅 MFC 技术说明 33 和 58。 // // Ctest1App BEGIN_MESSAGE_MAP(Ctest1App, CWinApp) END_MESSAGE_MAP() // Ctest1App 构造 Ctest1App::Ctest1App() { // TODO: 在此处添加构造代码, // 将所有重要的初始化放置在 InitInstance 中 } // 唯一的一个 Ctest1App 对象 Ctest1App theApp; // Ctest1App 初始化 BOOL Ctest1App::InitInstance() { CWinApp::InitInstance(); return TRUE; } #include <ProToolkit.h> #include <ProUtil.h> #include <ProMenuBar.h> #include <ProMenu.h> #include <ProMode.h> #include <ProMdl.h> #include <ProSolid.h> #include <ProAsmcomp.h> #include <ProArray.h> #include <ProModelitem.h> #include <ProLayer.h> #include <ProCabling.h> #include <ProCsys.h> #include "UtilCable.h" #include "UtilString.h" #include "TestError.h" #include "test_dialog.h" void MyDLG(); static uiCmdAccessState ChuangKouAccess (uiCmdAccessMode access_mode); ProFileName menuname; extern "C" int user_initialize(int argc,char *argv[]) { uiCmdCmdId cmd_id; ProError err; ProStringToWstring(menuname,"menuname.txt"); err=ProMenubarMenuAdd("BuXian","BuXian","Help", PRO_B_TRUE,menuname); err=ProCmdActionAdd("MyDLG",(uiCmdCmdActFn)MyDLG,uiCmdPrioDefault,ChuangKouAccess,PRO_B_FALSE,PRO_B_FALSE,&cmd_id); err=ProMenubarmenuPushbuttonAdd("BuXian","JianDanBX","JianDanBX","JianDanBX_help",NULL,PRO_B_TRUE,cmd_id,menuname); return 0; } void MyDLG() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); test_dialog *my=new test_dialog; my->Create(IDD_DIALOG1,NULL); my->ShowWindow(SW_SHOW); } static uiCmdAccessState ChuangKouAccess (uiCmdAccessMode access_mode) { return ACCESS_AVAILABLE; } extern "C" void user_terminate() { return; }