c++ - 如何设置 Visual Studio 2010 项目来为 Slickedit 17 构建 64 位扩展 dll?

标签 c++ visual-studio-2010 makefile nmake slickedit

我正在迁移到 Windows 7,进入 Slickedit 17 64 位 并且有一个旧的 32 位 Slickedit 扩展 DLL,我需要将其重新创建为 64 位。这个 DLL 基本上是一堆 WinAPI 调用的包装器。

Slickedit 带有一个示例 32 位“simple.dll”项目(咳咳),它只是一个 makefile。我需要知道如何设置 Visual Studio 项目以使用 Slickedits 库构建 64 位 DLL。

提供的makefile如下:

# 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 项目来处理这种类型的 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 上得到像样的回应持怀疑态度,无论如何上帝都爱他们

最佳答案

您需要告诉链接器您的 DLL 目标是 64 位的。这是通过链接器行上的 /MACHINE:X64 完成的。我只是在“$(linkdebug)”之后添加它。

您还需要将编译器设置为指向 amd64 版本,这在这个问题中有解释: How do you compile 32-bit and 64-bit applications at the same time in Visual Studio for C/C++ in a makefile?

关于c++ - 如何设置 Visual Studio 2010 项目来为 Slickedit 17 构建 64 位扩展 dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14086359/

相关文章:

c++ - 前向声明?包括守卫?或其他什么?

c++ - VS 2012 错误 LNK2019

makefile - 在 dotfiles 存储库中管理用户的 crontab

makefile - 怎么办 "make <subdir> <target>"?

c++ - 同时处理非成员函数指针和成员函数指针

php - 高性能Web Spider的开发

c++ - NMAKE : fatal error U1052: file 'Makefile.vc' not found

asp.net - 无法找到 asp.net 工作进程

c# - Visual Studio 2010 Crystal 报告 wpf

python - 使用 numpy 扩展的 C 程序的 Makefile