Как настроить проект Visual Studio 2010 для создания 64-битного расширения DLL для Slickedit 17?

Я перехожу на Windows 7, перехожу в Сликедит 17 64 бит и иметь старую 32-битную DLL-библиотеку расширения Slickedit, которую мне нужно воссоздать как 64-битную. Эта DLL в основном представляет собой связку для вызовов WinAPI.

Slickedit поставляется с примером 32-битного проекта ‘simple.dll’ (хм), который является только make-файлом. Мне нужно знать, как настроить проект Visual Studio для создания 64-битной DLL с помощью библиотек Slickedits.

Предоставленный make-файл выглядит следующим образом:

# This makefile supports the following Visual C++ versions:
# 7.10 (Visual Studio 2003), 8.00 (Visual Studio 2005),
# and 9.00 (Visual Studio 2008)
#
# Nmake macros for building Windows 32-Bit apps
!include <Win32.mak>

# Set linkdebug to nothing to link DLL without debug
#linkdebug=

DLLNAME=simple
cflags=$(cflags) -D_WINDOWS -I..\..\h

all: $(DLLNAME).lib $(DLLNAME).dll

# Update the object files if necessary

$(DLLNAME).obj: $(DLLNAME).cpp
$(cc) $(cflags) $(cvarsmt) $(cdebug) -Tp $*.cpp

# Update the import library

$(DLLNAME).lib: $(DLLNAME).obj $(DLLNAME).def
$(implib) -machine:$(CPU) \
-def:$(DLLNAME).def $*.obj -out:$*.lib

# Update the dynamic link library

LIBDIR=lib
$(DLLNAME).dll: $(DLLNAME).obj $(DLLNAME).def makefile
$(link) $(linkdebug) \
-NODEFAULTLIB:libc -base:0x1C000000  \
-dll -entry:_DllMainCRTStartup$(DLLENTRY) \
-out:$*.dll  \
$*.exp $*.obj ..\..\$(LIBDIR)\dllmain.obj ..\..\$(LIBDIR)\vsapi.lib ..\..\$(LIBDIR)\secommon.lib $(conlibsmt)

clean :
del $(DLLNAME).dll $(DLLNAME).obj $(DLLNAME).pdb $(DLLNAME).ilk

Makefiles — не моя вещь, и этот в любом случае установлен на 32 бит. Итак, как мне настроить Studio Project для обработки этого типа сборки C ++. У меня есть:

  • C: \ SE17 \ Lib \ dllmain.obj
  • C: \ SE17 \ Lib \ secommon.lib
  • C: \ SE17 \ Lib \ tagsdb.lib
  • C: \ SE17 \ Lib \ vsapi.lib

И поставляемый каталог заголовка в C: \ se17 \ h

Я спрашиваю об этом, потому что я довольно скептически отношусь к получению достойного ответа на community.slickedit.com.

1

Решение

Вы должны сообщить компоновщику, что ваша целевая библиотека DLL является 64-битной. Это сделано /MACHINE:X64 на линии компоновщика. Я бы просто добавил это после «$ (linkdebug)».

Вам также нужно будет установить компилятор так, чтобы он указывал на версию amd64, что объясняется в этом вопросе:
Как вы компилируете 32-битные и 64-битные приложения одновременно в Visual Studio для C / C ++ в make-файле?

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]